gpt4 book ai didi

django - 如何创建具有最大和最小限制的 Django FloatField?

转载 作者:行者123 更新时间:2023-11-28 19:34:13 24 4
gpt4 key购买 nike

我在我的 Django 模型中存储了一些 float 据,只有特定范围的值才有意义。因此,我想在模型和 SQL 约束级别都施加这些限制。

例如,我想做这样的事情:

class Foo(Model):
myfloat = FloatField(min=0.0, max=1.0)

我想在模型级别而不是表单级别执行此操作。事实上,我可能希望表单级别有不同的范围;例如,在表单级别使用百分比 [0,100],但在模型中转换为 [0,1]。

这可能吗?如果可能,我该怎么做?

最佳答案

到目前为止的答案描述了如何使表单有效。您还可以将验证器放入模型中。使用 MinValueValidatorMaxValueValidator .

例如:

from django.core.validators import MaxValueValidator, MinValueValidator

...
weight = models.FloatField(
validators=[MinValueValidator(0.0), MaxValueValidator(1.0)],
)

编辑:

但是,这不会添加 SQL 约束。

您可以按照描述添加 SQL 约束 here作为 Meta.constraints 中的 CheckConstraint

组合示例:

from django.core.validators import MaxValueValidator, MinValueValidator
from django.db.models import CheckConstraint, Q

class Foo(Model):
myfloat = FloatField(min=0.0, max=1.0,
# for checking in forms
validators=[MinValueValidator(0.0), MaxValueValidator(1.0)],)

class Meta:
constraints = (
# for checking in the DB
CheckConstraint(
check=Q(myfloat__gte=0.0) & Q(myfloat__lte=1.0),
name='foo_myfloat_range'),
)

关于django - 如何创建具有最大和最小限制的 Django FloatField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10539026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com