Django Rest Framework ModelSerializer字段不符合required=False
使用django rest framework 3.1.1,我有以下序列化程序:Django Rest Framework ModelSerializer字段不符合required=False,django,django-rest-framework,Django,Django Rest Framework,使用django rest framework 3.1.1,我有以下序列化程序: class CommentSerializer(ContentSerializer): created_by = UserSerializer(required=False) content = serializers.PrimaryKeyRelatedField(queryset=Content.objects.all(), required=False) class Meta:
class CommentSerializer(ContentSerializer):
created_by = UserSerializer(required=False)
content = serializers.PrimaryKeyRelatedField(queryset=Content.objects.all(), required=False)
class Meta:
model = Comment
{"created_by":{"username":["This field is required."],"user_permissions":["This field is required."],"password":["This field is required."],"groups":["This field is required."],"profile_picture":["This field is required."]}}
虽然content字段尊重required=False参数,但创建的\u不遵守,因此,它为我提供了UserSerializer中的required=False验证错误列表:
class CommentSerializer(ContentSerializer):
created_by = UserSerializer(required=False)
content = serializers.PrimaryKeyRelatedField(queryset=Content.objects.all(), required=False)
class Meta:
model = Comment
{"created_by":{"username":["This field is required."],"user_permissions":["This field is required."],"password":["This field is required."],"groups":["This field is required."],"profile_picture":["This field is required."]}}
根据处理嵌套对象的部分,它演示了序列化程序的用法
我所尝试的:
我之前关于这一点的讨论和尝试添加get_验证_排除没有帮助,因为我相信这一点已经得到了关注
将created_by更改为created_by=serializers.PrimaryKeyRelatedFieldrequired=False可以工作,但这不是我想要的
对现有问题的快速搜索表明,我不是唯一一个有此问题的人:
更新:
我已经创建了几个测试用例,请参见,但无法复制该问题,看起来它只是通过Ajax Post发生的。我在created_by字段中添加了read_only=True,现在它工作正常
class CommentSerializer(ContentSerializer):
created_by = UserSerializer(required=False, read_only=True)
content = serializers.PrimaryKeyRelatedField(queryset=Content.objects.all(), required=False)
class Meta:
model = Comment