Django 模型表单似乎没有验证 BooleanField
Django Model Form doesn't seem to validate the BooleanField
在我的模型中,验证没有针对布尔字段进行验证,只需要检查一次product_field,如果检查两次会引发验证错误。
product_field = models.BooleanField(default=False)
def clean(self):
if (self.product_field is not None).count() < 1:
raise ValidationError(
{
"product_field": _(" Product field can be select once")
}
)
布尔值和 None
并不总是相同的。我认为这是你问题的根源。这是 None
与 False
:
# python3
> False is None
False
我觉得代码和信息很混乱。
我认为 product_filed
是一个错字。通常 models.BooleanField
有可能 True
和 False
。如果设置了 blank=True
和 required=False
,则可能会发生 None
(取消设置也称为 NULL)。
保留 default=False
并且不检查 None
,您永远不会看到 None
具有布尔值的默认值。
你提到 if two time checked raise validation error
- 嗯?这也令人费解。你想达到什么目的?逻辑和细节对我来说完全没有意义。
要检查布尔值,您可以使用 if not self.product_field:
... raise.
正在计算什么?
在我的模型中,验证没有针对布尔字段进行验证,只需要检查一次product_field,如果检查两次会引发验证错误。
product_field = models.BooleanField(default=False)
def clean(self):
if (self.product_field is not None).count() < 1:
raise ValidationError(
{
"product_field": _(" Product field can be select once")
}
)
布尔值和 None
并不总是相同的。我认为这是你问题的根源。这是 None
与 False
:
# python3
> False is None
False
我觉得代码和信息很混乱。
我认为 product_filed
是一个错字。通常 models.BooleanField
有可能 True
和 False
。如果设置了 blank=True
和 required=False
,则可能会发生 None
(取消设置也称为 NULL)。
保留 default=False
并且不检查 None
,您永远不会看到 None
具有布尔值的默认值。
你提到 if two time checked raise validation error
- 嗯?这也令人费解。你想达到什么目的?逻辑和细节对我来说完全没有意义。
要检查布尔值,您可以使用 if not self.product_field:
... raise.
正在计算什么?