嗨,我正在尝试使用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)
但这对我没有用。
有办法使它工作吗?
预先感谢
留下。
答案 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
答案 1 :(得分:3)
您可以这样验证
def validate_accept_terms(self, value):
if value is not True:
raise serializers.ValidationError("terms must be accepted")
return value
并将此函数放入序列化器