Django modelformset_factory валидация виджетов
У меня проблемы с пониманием того, как работает валидация полей формы/модели в Django 4.1.1.
Я хочу использовать models.CharField в моей модели с
stores = models.CharField(validators=[validate_comma_separated_integer_list], max_length=255)
однако при вводе и публикации моего набора форм не происходит валидации, как если бы я использовал models.EmailField и forms.EmailInput в форме/виджете.
Возможно, я что-то неправильно понимаю, но не могу разобраться. Надеюсь, кто-нибудь сможет направить меня в правильном направлении. Будьте так суровы, как вам нравится.
forms.py -
ServerFormSet = modelformset_factory(
RequestServersStores, fields=("server_number", "store_numbers"), extra=1, validate_max=True, validate_min=True,
labels={
'server_number': 'Server Number',
'store_numbers': 'Store Numbers'
},
widgets={
'server_number': forms.Select(
choices=server_choices
),
'store_numbers': forms.TextInput(
attrs={
'class': 'form-control',
'placeholder': 'comma separated list of store numbers e.g. 7,15,29'
}
)
})
views.py -
...
elif request.method == 'POST':
create_request = CreateUserForm(request.POST)
server_formset = ServerFormSet(request.POST)
if create_request.is_valid() and server_formset.is_valid():
request = create_request.save()
for form in server_formset:
server = form.save(commit=False)
server.request = request
server.save()
models.py -
class RequestServersStores(models.Model):
objects = models.manager
server_number = models.CharField(max_length=6)
store_numbers = models.CharField(validators=[validate_comma_separated_integer_list], max_length=255)
request = models.ForeignKey(
CreateUserRequest,
related_name='servers', on_delete=models.SET_NULL,
null=True
)