I made the following Django form.
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)
In this form even if I submit a string like 'hello' the form gets submitted. I mean I can get the value 'hello' in views.py. I don't understand why because "int_list_validator" should not allow it.
Unfortunate naming: int_list_validator
is not a validator but a helper function that creates one.
validate_comma_separated_integer_list
is a validator, created by calling int_list_validator
with a more suitable message than the default _("Enter a valid value.")
:
validate_comma_separated_integer_list = int_list_validator( message=_("Enter only digits separated by commas."), )
Usage:
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)