Django PositiveIntegerField中的值是0吗?

时间:2010-02-11 23:37:42

标签: django django-models

类型models.PositiveIntegerField的字段是否包含0值?我正在做类似的事情:

points = models.PositiveIntegerField(default=0)

谢谢,

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

4 个答案:

答案 0 :(得分:28)

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

答案 1 :(得分:5)

model field reference这样说。为了完整起见,这里也引用了:

  

PositiveIntegerField

class PositiveIntegerField([**options])
     

与IntegerField类似,但必须为正数或零(0)。由于向后兼容性原因,接受值0。

答案 2 :(得分:2)

对于那些想要排除0的人来说,为此写一个validator很容易。

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]
)

答案 3 :(得分:1)

通过正整数的定义,它不应该接受零值,但是django实际上认为它是非负数的意义,它是零包含的。所以,是的它可以接受零值