Создание исключения в валидации EmailField в django - PullRequest
0 голосов
/ 13 февраля 2011

У меня есть модель с именем EmailHistory с одним из полей, которые выглядят так:

from_email = models.EmailField(verbose_name="From:")

Я создал ModelForm и хочу проверить адреса электронной почты, если для него не установлено значение «Аноним». Я попробовал следующее, но безрезультатно.

class EmailForm(ModelForm):
    class Meta:
        model = EmailHistory
        exclude = ('to_email')

    to_emails = forms.CharField()

    def clean_from_email(self):

        from_email = self.cleaned_data['from_email']
        if from_email == "Anonymous":
            return from_email
        else:
            return super(EmailForm, self).clean_from_email();

Ответы [ 2 ]

0 голосов
/ 14 февраля 2011

Я не мог заставить его работать без переопределения from_email.Итак, я переопределил его, а затем сделал проверку электронной почты, используя django.core.validators.validate_email:

class EmailForm(ModelForm):
    class Meta:
        model = EmailHistory
        exclude = ('to_email')

    to_emails = forms.CharField()
    from_email = forms.CharField(required=True)

    def clean_from_email(self):
        from_email = self.cleaned_data['from_email']
        if from_email == "Anonymous":
            from_email = "myemail@example.com"

        validate_email(from_email)

        return from_email
0 голосов
/ 13 февраля 2011

Я подозреваю, что проблема в том, что, как объясняет документация , метод clean базового поля формы, который, в свою очередь, запускает валидаторы, запускается перед конкретным методом clean_form_field вФорма сама.Возможно, вы захотите использовать обычный CharField в своей форме и сами добавить проверку электронной почты в метод clean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...