Django PositiveIntegerField 中的 0 值?

发布于 2024-08-20 18:49:54 字数 173 浏览 6 评论 0原文

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

points = models.PositiveIntegerField()

谢谢,

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

Can a field of type models.PositiveIntegerField contain a 0 value? I'm doing something like:

points = models.PositiveIntegerField()

Thanks,

I know I should try it myself, but I haven't a Django environment here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

硬不硬你别怂 2024-08-27 18:49:54

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

Yes, it can. It is debatable whether it should--there is a longstanding bug report: http://code.djangoproject.com/ticket/7609

鹿童谣 2024-08-27 18:49:54

对于那些想要排除 0 的人,很容易编写 validator< /a> 为此。

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

For those looking to exclude the 0, it's easy to write a validator for that.

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

and then use it as such

fill_qty = models.PositiveIntegerField(
  default=0,
  validators=[MaxValueValidator(1000000), validate_nonzero]
)
过去的过去 2024-08-27 18:49:54

是的。

模型字段引用是这么说的。为了完整起见,还在这里引用:

正整数字段

class PositiveIntegerField([**选项])

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

Yes.

The model field reference says so. For completeness, also quoted here:

PositiveIntegerField

class PositiveIntegerField([**options])

Like an IntegerField, but must be either positive or zero (0). The value 0 is accepted for backward compatibility reasons.

青朷 2024-08-27 18:49:54

根据正整数的定义,它不应该接受零值,但 django 实际上将其视为非负数,即包含零在内的数。所以,是的,它可以接受零值

Well by the definition of a Positive Integer, it shouldn't accept a zero value, but django actually considers it in the sense of none-negative number which is zero inclusive. So, Yes it can accept a zero value

顾挽 2024-08-27 18:49:54

是的,“PositiveIntegerField”可以包含“0”值

例如,我定义了模型“Point”,如下所示:

# "myapp/models.py"

from django.db import models

class Point(models.Model):
    points = models.PositiveIntegerField()

然后,运行以下命令:

python manage.py makemigrations && python manage.py migrate

现在,我打开“db.sqlite3”,然后如您所见, "CHECK("points" >= 0)" 设置为"points" 字段,这意味着"PositiveIntegerField" 可以包含 “0”值

在此处输入图像描述

Yes, "PositiveIntegerField" can contain "0" value.

For example, I defined the model "Point" as shown below:

# "myapp/models.py"

from django.db import models

class Point(models.Model):
    points = models.PositiveIntegerField()

Then, run this command below:

python manage.py makemigrations && python manage.py migrate

Now, I opened "db.sqlite3" then as you can see, "CHECK("points" >= 0)" is set to "points" field which means "PositiveIntegerField" can contain "0" value:

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文