情况就是这样:
我有两个序列化程序类,一个从另一个继承
class FatherSerializer(...):
class Meta(object):
model = Person
fields = ('name', 'email', 'brother')
name = serializers.CharField()
email = serializers.EmailField()
brother = serializers.CharField()
def validate_email(self, value):
if Person.objects.filter(email=value).exists():
raise serializers.ValidationError('Such email already exists')
return value
def validate_brother(self, value):
if not Person.objects.filter(name=value).exists():
raise serializers.ValidationError('Such person doesnt exist')
return Person.objects.get(name=value)
class ChildSerializer(FatherSerializer):
class Meta(object):
model = Person
fields = ('name', 'email', 'sister')
sister = serializers.CharField()
我想对“姐妹”使用与“兄弟”相同的验证器。它适用于电子邮件,因为字段的名称是相同的。但是,有没有一种方法可以使同一个序列化程序适用于两个不同的字段
我尝试了一个自定义验证器,在两个类之外实现它,并在字段的validators
参数中使用它。但它不能正常工作,因为我希望返回的值是Person对象,但我得到的只是原始输入值(所以称为“name”)
先谢谢你
您可以使用自定义验证声明自己的
SiblingField
,然后在FatherSerializer
上为brother
使用它,在ChildSerializer
上为sister
使用它您可以在“姐妹”字段中使用FatherSerializer
相关问题 更多 >
编程相关推荐