Django REST框架-要求BooleanField为true

时间:2019-05-10 08:41:42

标签: django validation django-rest-framework boolean

嗨,我正在尝试使用Django REST框架创建一个带有boolean字段的rest api,该布尔字段必须为true。

在模型中:

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

在我的序列化器中,我有:

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

问题是我可以发布到此api agree_terms = false,并且试图将其设置为True

我尝试添加到序列化程序中:

accept_terms = fields.BooleanField(required=True)

但这对我没有用。

有办法使它工作吗?

预先感谢

留下。

2 个答案:

答案 0 :(得分:3)

您要寻找的是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

docs

答案 1 :(得分:3)

您可以这样验证

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

并将此函数放入序列化器