Django Rest Framework无效的序列化

问题描述 投票:2回答:1

我试图将字典序列化为关系序列化器,数据序列化很好,但验证器返回false

RelationshipSerializer:

class RelationshipSerializer(serializers.ModelSerializer):

    user = UserSerializer(read_only=False)
    related_user = UserSerializer(read_only=False)

    class Meta:
        model = models.Relationship
        fields = (
            'user',
            'related_user',
        )

视图:

related_user_id = body["related_user"]
related_user = models.User.objects.get(id=related_user_id)

user = self.get_object()

user_serializer = serializers.UserSerializer(user).data
related_user_serializer = serializers.UserSerializer(related_user).data

# user_serializer and related_user_serializer return valid data.

data = {"user": user_serializer, "related_user": related_user_serializer}

serializer = serializers.RelationshipSerializer(data=data)

# Serializer works fine, it prints out data correctly    

serializer.is_valid() # Returns false

return Response(serializer.data)

当我记录serializer.errors我得到

{
    "required": "This field is required.",
    "null": "This field may not be null.",
    "invalid": "Invalid data. Expected a dictionary, but got {datatype}."
}

我尝试将我的序列化器字段设置为null = Truerequired = False,但仍然没有运气

python django serialization django-rest-framework
1个回答
0
投票

在序列化器字段中尝试allow_blank和allow_null:

user = UserSerializer(read_only=False, allow_blank=True, allow_null=True)
related_user = UserSerializer(read_only=False, allow_blank=True, allow_null=True)
© www.soinside.com 2019 - 2024. All rights reserved.