我有一个序列化程序,我试图添加字段级验证,我需要验证序列化的某些字段是否为空,以及布尔字段是真还是假。
我有这个序列化程序,但即使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
答案 0 :(得分:5)
适用于Django rest framework 3.0
及更新版本:
def validate_Titulo(self, value):
答案 1 :(得分:3)
使用attrs['Ficha_publicada']
:
if not attrs['Ficha_publicada']:
raise serializers.ValidationError("Ficha no publicada")
return attrs
答案 2 :(得分:3)
对于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'