Django PositiveIntegerField中的0值?

38 投票
5 回答
28543 浏览
提问于 2025-04-15 19:11

一个类型为 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

撰写回答