"int_list_validator"在 Django 表单中不起作用



我制作了如下的Django表单:

from django.core.validators import int_list_validator
class RoomForm(forms. Form):
room_numbers = forms.CharField(validators=[int_list_validator], required=False, max_length=4000)

在这个表单中,即使我提交了像'hello'这样的字符串,表单也会被提交。我可以在views。py中获取值hello。我不明白为什么因为"int_list_validator"不应该允许。

不幸的命名:int_list_validator不是一个验证器,而是一个创建验证器的辅助函数。

validate_comma_separated_integer_list是一个验证器,通过调用int_list_validator创建一个比默认的_("Enter a valid value.")更合适的消息:

validate_comma_separated_integer_list = int_list_validator(
message=_("Enter only digits separated by commas."),
)

用法:

from django import forms
from django.core.validators import int_list_validator, validate_comma_separated_integer_list

# room_numbers = forms.CharField(validators=[int_list_validator], required=False, max_length=4000)
room_numbers = forms.CharField(validators=[int_list_validator()], required=False, max_length=4000)
# Or
room_numbers = forms.CharField(validators=[validate_comma_separated_integer_list], required=False, max_length=4000)

最新更新