我想在Django中为FloatField设置最小值,以便表单字段不接受负值。对于Integer,我将数据类型更改为PositiveIntegerField,但在float字段的情况下最小值不起作用。

from django.core.validators import MaxValueValidator, MinValueValidator

max_discount = models.FloatField( verbose_name=u'Maximum Discount', validators = [MinValueValidator(0.0)])

最佳答案

您的代码:

from django.core.validators import MaxValueValidator, MinValueValidator

max_discount = models.FloatField( verbose_name=u'Maximum Discount', validators = [MinValueValidator(0.0)])


看起来不错。
您应该注意的是


保存模型时,验证程序不会自动运行,但是如果
您正在使用ModelForm,它将在任何字段上运行验证器
包含在您的表格中。


有关更多信息,请参见docs

您也可以在表单中添加某种html属性验证,例如:

<input type="number" min="0.0">


进行服务器端验证。

编辑

如果您的表单字段位于管理界面中,则可以为此字段自定义窗口小部件(基本上是HTML)。您可以在管理界面中看到here如何将自定义窗口小部件添加到字段中。

10-04 11:32