required=False对序列化程序中的序列化程序没有影响



序列化程序:

class AvatarBaseSerializer(Serializer):
uuid = ReadOnlyField()
user = UserBaseSerializer(read_only=True)
name = CharField(allow_blank=True)
GENDER = (("M", "Man"), ("W", "Woman"))
gender = ChoiceField(choices=GENDER)
body = BodySerializer(partial=True, required=False)
head = HeadBaseSerializer(read_only=True)
head_pk = IntegerField(write_only=True)
head_adjust = HeadAdjustBaseSerializer(partial=True, required=False)
hair = HairBaseSerializer(read_only=True)
hair_pk = UUIDField(write_only=True)
hair_adjust = HairAdjustBaseSerializer(partial=True, required=False)
thumbnail = ImageField(required=False, allow_null=True) 

视图集:

class AvatarViewSet(viewsets.ModelViewSet):
queryset = Avatar.objects.all()
serializer_class = AvatarBaseSerializer
permission_classes = (permissions.UserIsRequestUserPermission,)
...
def partial_update(self, request, *args, **kwargs):
self.check_thumbnail_file_size(request)
return super().partial_update(request, *args, **kwargs)

我通过PATCH方法发送以下参数。然而,Django rest框架返回400错误请求("无效输入"(。

{
"head_pk": 1,
"hair_pk": "89d4c318-c9bf-42cd-b4c4-b7e70a2c8f40",
"name": "gewgew",
"gender": "W"
}

我想发送不带body、head_ajust、hair_just的参数。

对ModelSerializer应用验证时,序列化程序字段及其相应的模型字段都必须正确验证。如果您的模型上有可选字段,请确保在模型字段上正确设置blank=True,并在序列化程序字段上设置required=False

你可以在文档中看到

相关内容

最新更新