0

我在 Django 表单中有以下字段:

area = forms.FloatField(required=False, min_value=0, max_value=100)

如何使最小限制包括在内,最大限制包括在内

此表单上的 Django 页面没有提及任何关于排他性与包容性的内容。查看源代码让我觉得这不是直接内置到 Django 中的。我对吗?如果是这样,我该如何解决这个问题?

4

2 回答 2

4

编写一个自定义验证器来完成它。它们并不复杂,现有MinValueValidatorMaxValueValidatorindjango.core.validators将为您提供一个良好的起点。

https://docs.djangoproject.com/en/dev/ref/validators/#writing-validators

class ExclusiveMinValueValidator(BaseValidator):
    compare = lambda self, a, b: a <= b
    message = _(u'Ensure this value is greater than %(limit_value)s.')
    code = 'min_value'

clean您还可以为该字段编写自定义方法。

于 2013-08-08T23:43:28.150 回答
2

我会在您的表单中编写一个自定义的 clean_field 方法,如下所示:

def clean_area(self):
    data = self.cleaned_data['area']
    if (data > 0 and data <= 100):
        return ValidationError("Some custom message alerting the user!")
    return data

该方法只需返回您想要的值,请参阅Django 文档

然后,只需将您的字段重新定义为:

area = forms.FloatField(required=False)  # see additional clean field method
于 2013-08-09T00:26:02.507 回答