Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Rest Framework ModelSerializer字段不符合required=False_Django_Django Rest Framework - Fatal编程技术网

Django Rest Framework ModelSerializer字段不符合required=False

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:

使用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:
        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