Django PositiveIntegerField中的值是0吗?

Jua*_*nti 26 django django-models

类型为models.PositiveIntegerField的字段可以包含0值吗?我做的事情如下:

points = models.PositiveIntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

谢谢,

我知道我应该自己尝试,但我这里没有Django环境.

Mic*_*ene 28

是的,它可以.它是否应该值得商榷 - 有一个长期的错误报告:http://code.djangoproject.com/ticket/7609


jon*_*sai 5

是.

模型字段参考是这么说的.为了完整起见,这里也引用了:

PositiveIntegerField

class PositiveIntegerField([**options])
Run Code Online (Sandbox Code Playgroud)

像IntegerField一样,但必须是正数或零(0).由于向后兼容性原因,接受值0.


sha*_*adi 5

对于那些希望排除 0 的人,很容易为此编写一个验证器

def validate_nonzero(value):
    if value == 0:
        raise ValidationError(
            _('Quantity %(value)s is not allowed'),
            params={'value': value},
        )
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它

fill_qty = models.PositiveIntegerField(
  default=0,
  validators=[MaxValueValidator(1000000), validate_nonzero]
)
Run Code Online (Sandbox Code Playgroud)

  • 可能是我个人的经历。有了这个在文档上说的,https://docs.djangoproject.com/en/1.11/ref/validators/#how-validators-are-run 我可以去世界的任何地方大声喊出来。:) (2认同)