Эффект обязательный отсутствует = False to Serializer в Serializer - PullRequest
0 голосов
/ 13 декабря 2018

Сериализаторы:

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 возвращает 400 Bad Request («Неверный ввод»).

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

Я хочу отправить параметры без тела, head_adjust, hair_adjust.

1 Ответ

0 голосов
/ 13 декабря 2018

Когда проверка применяется к ModelSerializer, оба поля сериализатора и соответствующие им поля модели должны корректно проверяться.Если в вашей модели есть дополнительные поля, убедитесь, что в поле модели правильно установлено значение blank=True, а в поле сериализатора required=False

, которое можно увидеть в Документах * 1006.*

...