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 并不总是相同的。我认为这是你问题的根源。这是 NoneFalse:

# python3
> False is None
False

我觉得代码和信息很混乱。

我认为 product_filed 是一个错字。通常 models.BooleanField 有可能 TrueFalse。如果设置了 blank=Truerequired=False,则可能会发生 None(取消设置也称为 NULL)。

保留 default=False 并且不检查 None,您永远不会看到 None 具有布尔值的默认值。

你提到 if two time checked raise validation error - 嗯?这也令人费解。你想达到什么目的?逻辑和细节对我来说完全没有意义。

要检查布尔值,您可以使用 if not self.product_field: ... raise.

正在计算什么?