Динамически добавьте ProhibitNullCharactersValidator в форму __init__ в Django.Нужен совет - PullRequest
0 голосов
/ 23 апреля 2019

Довольно простой вопрос для тех, кто знает ответ.

Возможно ли динамически добавлять валидатор в поле формы в froms init ???

Я хочу сделать что-то вроде этого:


class SomeForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.pk = kwargs.pop("pk", None)
        forms.ModelForm.__init__(self, *args, **kwargs)

        if self.pk == some integer:
    self.fields[field].validator(s)……..  # and I don’t know what to type here
        else:
    do something else…

Цель - динамически добавить ProhibitNullCharactersValidator в зависимости от self.pk к self.fields [field] (одно поле формы)

Спасибо заранее и извините, если этот вопрос тупой.

1 Ответ

1 голос
/ 23 апреля 2019

Поскольку вы хотите добавить валидатор в определенное поле, вы можете переопределить метод clean_ для этого поля и вызвать там валидатор.

class SomeForm(forms.ModelForm):
    def clean_myfield(self):
        value = self.cleaned_data.get('myfield')
        if self.instance.pk == some_value:
            ProhibitNullCharactersValidator(value)
        return value
...