我正在尝试添加一个限制,以便用户始终将复选框选中为“ True”。看起来像这样,但不幸的是它无法正常工作。任何帮助将不胜感激。
models.py
class OrderingMassage(models.Model):
website_rules = models.BooleanField(default=None, blank=True)
forms.py
class OrderingMassageForm(forms.ModelForm):
class Meta:
model = OrderingMassage
fields = ('website_rules')
def clean_website_rules(self):
data = self.cleaned_data['website_rules']
if data == None:
raise forms.ValidationError("please accept the rules of the website")
else:
return data
答案 0 :(得分:2)
如果始终(应该)为真,则不应首先使用Model
。模型存储数据。但是,如果所有记录都具有相同的记录,则没有太多数据。如果某列始终为True
,那么该列的用途是什么?
您遇到的第二个问题是BooleanField
[Django-doc](在表单字段中)将产生False
作为“空值。因此检查真实性可能更Python化,例如:
class OrderingMassageForm(forms.Form):
website_rules = forms.BooleanField(label='I accept the rules of the website.')
def clean_website_rules(self):
data = self.cleaned_data['website_rules']
if not data:
raise forms.ValidationError("please accept the rules of the website")
else:
return data
因此,您不需要需要调用该表格的.save()
。但是.is_valid(..)
会验证表单,因此会出现错误。