Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 表单字段的独占限制_Python_Django_Django Forms - Fatal编程技术网

Python 表单字段的独占限制

Python 表单字段的独占限制,python,django,django-forms,Python,Django,Django Forms,我有Django表单中的以下字段: area = forms.FloatField(required=False, min_value=0, max_value=100) 如何将最低限额设为独占,将最高限额设为包含 没有提到任何关于排他性和包容性的东西。看着源代码,我觉得这不是直接内置到Django中的。我说得对吗?如果是这样,我该如何解决这个问题呢?编写一个自定义验证器来实现这一点。它们并不复杂,现有的django.core.validator中的MinValueValidator和MaxV

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

area = forms.FloatField(required=False, min_value=0, max_value=100)
如何将最低限额设为独占,将最高限额设为包含


没有提到任何关于排他性和包容性的东西。看着源代码,我觉得这不是直接内置到Django中的。我说得对吗?如果是这样,我该如何解决这个问题呢?

编写一个自定义验证器来实现这一点。它们并不复杂,现有的
django.core.validator
中的
MinValueValidator
MaxValueValidator
将为您提供一个良好的起点

类排他ValueValidator(BaseValidator):

compare=lambda self,a,b:a编写一个自定义验证器来执行此操作。它们并不复杂,现有的
django.core.validator
中的
MinValueValidator
MaxValueValidator
将为您提供一个良好的起点

类排他ValueValidator(BaseValidator):

compare=lambda self,a,b:a我会以您的形式编写一个自定义的clean_字段方法,如下所示:

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

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

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

这仍然是一个很好的答案。但我最终使用了彼得的解决方案。是的,两种方法都是完全可行的。我认为,如果您有多个字段要执行此操作,或者希望在模型级别应用它,那么定制验证器会更好。“但是自定义的清理方法也没有什么问题。”他们不必担心,很高兴你找到了答案。验证器对于避免在多个地方使用相同的验证代码是非常有用的。我应该开始更多地使用它们。这仍然是一个很好的答案。但我最终使用了彼得的解决方案。是的,两种方法都是完全可行的。我认为,如果您有多个字段要执行此操作,或者希望在模型级别应用它,那么定制验证器会更好。“但是自定义的清理方法也没有什么问题。”他们不必担心,很高兴你找到了答案。验证器对于避免在多个地方使用相同的验证代码是非常有用的。我应该开始更多地使用它们。实际上,在实践中使用它之后,我相信您需要
code='limit\u value'
才能使其工作。无论哪种方式,它都应该工作-如果违反了这一点,将在构建ValidationError时使用代码值。这与内置的
MinValueValidator
完全相同,只是它测试了
我尝试了您输入的内容,但是您的
消息不会显示出来。但是问题随着
code='limit\u value'
而消失。事情就是这样。查看
django.core.validators.BaseValidator.\uu call_uu()
,我认为设置
params
变量并将其传递到
ValidationError
非常重要。您是收到默认的“小于或等于”消息,还是根本没有收到任何消息?我收到的是默认的“小于或等于”事实上,在实践中使用此选项后,我相信您需要
code='limit\u value'
才能使其正常工作。无论哪种方式,它都应该正常工作-如果违反此选项,将在构建ValidationError时使用代码值。这与内置的
MinValueValidator
完全相同,只是它测试了
我尝试了您输入的内容,但是您的
消息不会显示出来。但是问题随着
code='limit\u value'
而消失。事情就是这样。查看
django.core.validators.BaseValidator.\uu call_uu()
,我认为设置
params
变量并将其传递到
ValidationError
非常重要。您是收到默认的“小于或等于”消息,还是根本没有收到任何消息?我收到的是默认的“小于或等于”消息
area = forms.FloatField(required=False)  # see additional clean field method