2014-09-30 162 views
3

我有一個序列化器,我試圖添加字段級驗證,我需要驗證序列化的一些charfields是否爲空,如果布爾型字段爲true或假。Django休息框架 - 串行器中的字段級驗證

我有這個串,但即使Ficha_publicada是假

class PublicarSerializer(serializers.Serializer): 

    Titulo = serializers.CharField(required=True) 
    Ficha_publicada = serializers.BooleanField() 

    def validate_Titulo(self, attrs, source): 
     value = attrs[source] 

     if not Ficha_publicada: 
      raise serializers.ValidationError("Ficha no publicada") 
     return attrs 

    class Meta: 
     model = Fichas 

回答

3

使用attrs['Ficha_publicada']我從來沒有返回一個錯誤:

if not attrs['Ficha_publicada']: 
    raise serializers.ValidationError("Ficha no publicada") 
return attrs 
+0

完美。謝謝! – Audoen 2014-09-30 14:34:34

+0

@Audoen你的歡迎。 – 2014-09-30 18:04:40

2

Django的1.8,你需要使用一個稍微不同的方法簽名。

從(< 1.8) def validate_Titulo(self, attrs, source):

爲(1.8) def validate_Titulo(self, attrs, source=None):

如果你沒有在Django 1.8默認None添加到source參數,你會得到一個TypeError異常說:

validate_Titulo()缺少1個必需的位置參數:'source'

5

Django rest framework 3.0和更新版本:

def validate_Titulo(self, value):