class ChildSerializer(serializers.ModelSerializer):
class Meta:
model = Child
fields = '__all__'
class ParentSerializer(serializers.ModelSerializer):
"""
Serializer for task
"""
def validate_title(self, data):
if not data.get('title'):
raise serializers.ValidationError('Please set title')
return data
Post时未调用Validate函数,我如何向ChildSerializer提供自定义错误
我遇到了一个类似的问题,我的自定义验证字段没有被调用。我写这篇文章是为了绕过一个错误的DRF验证(下面显示了更多细节,但答案不是必需的)。在
在查看DRF源代码时,我发现了我的问题:DRF总是在使用自定义代码进行验证之前使用其代码验证字段。在
回答:自定义验证器不能用来绕过DRF的验证器,因为它们总是首先运行,并在您可以说它有效之前引发异常。在
(对于感兴趣的人,我遇到的验证错误是这样的:ModelSerializer用于ModelA,它与ModelB有一对一的关系。ModelB的pk有一个UUID。DRF在验证时抛出错误
'53abb068-0286-411e-8729-0174635c5d81' is not a valid UUID.
,这是不正确的,非常令人恼火。)ParentSerializer验证方法存在一些问题。假设您的}。Reference
ParentSerializer
模型中有一个title
字段。对于字段级验证,您将获得字段而不是整个数据。即validate_title
函数应该将title
(数据的标题字段)作为参数而不是data
。因此,您不必检查data.get('title')
是否存在{相关问题 更多 >
编程相关推荐