Django REST framework - требует, чтобы BooleanField был верным - PullRequest
1 голос
/ 10 мая 2019

Привет. Я пытаюсь создать API для отдыха с помощью Django REST framework с логическим полем, которое должно быть истинным.

Внутри модели у меня есть:

class MyForm(models.Model):
    ...
    agree_terms = models.BooleanField()

и в моем сериализаторе у меня есть:

class MyFormSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyForm
        fields = (..., 'agree_terms')

Проблема в том, что я могу POST к этому API agree_terms = false, и я пытаюсь сделать так, чтобы оно было True.

Я пытался добавить в сериализатор:

accept_terms = fields.BooleanField(required=True)

но у меня это не сработало.

Есть ли способ заставить его работать?

Заранее спасибо,

Etay.

Ответы [ 2 ]

3 голосов
/ 10 мая 2019

вы можете подтвердить, как это

def validate_accept_terms(self, value):
    if value is not True:
        raise serializers.ValidationError("terms must be accepted")
    return value

и поместите эту функцию в ваш сериализатор

3 голосов
/ 10 мая 2019

То, что вы ищете, это validate(). Установка required=True делает поле обязательным для заполнения, что означает, что оно должно присутствовать в теле сообщения независимо от его значения.

class MyFormSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyForm
        fields = (..., 'agree_terms')
    def validate_agree_terms(self, value):
        if not value:
            raise serializers.ValidationError("Validation error")
        return value

* 1007 документы *

...