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
)
Вернуться на верх