Django PositiveIntegerField中的0值?
一个类型为 models.PositiveIntegerField 的字段可以包含 0 吗?我正在做类似这样的事情:
points = models.PositiveIntegerField()
谢谢,
我知道我应该自己试试,但我这里没有 Django 环境。
5 个回答
6
是的。
这个内容在模型字段参考中有说明。为了完整性,这里也引用一下:
PositiveIntegerField
class PositiveIntegerField([**options])
它和IntegerField类似,但必须是正数或者零(0)。之所以接受0,是为了兼容旧版本。
9
如果你想排除0这个值,其实很简单,你可以写一个验证器来实现这个功能。
def validate_nonzero(value):
if value == 0:
raise ValidationError(
_('Quantity %(value)s is not allowed'),
params={'value': value},
)
然后你可以这样使用它。
fill_qty = models.PositiveIntegerField(
default=0,
validators=[MaxValueValidator(1000000), validate_nonzero]
)
39
是的,它可以这样做。不过,是否应该这样做还有争议,因为有一个长期存在的bug报告:http://code.djangoproject.com/ticket/7609