Как вернуть начальное значение при проверке настраиваемого поля формы? - PullRequest
0 голосов
/ 03 августа 2020

У меня есть настраиваемое поле формы, которое принимает несколько писем. Он является подклассом MultipleChoiceField и переопределяет метод validate:

class MultiEmailField(forms.MultipleChoiceField):
    """
    A choice field that validates a list of emails
    """

    def validate(self, value):
        validation_errors = []

        if self.required and not value:
            raise ValidationError(self.error_messages['required'],
                                  code='required')

        # Validate that each value in the value list is a valid email
        for val in value:
            try:
                validate_email(val)
            except ValidationError:
                validation_errors.append(f'<strong>{val}</strong> is not a '
                                         'valid email address.')
        if validation_errors:
            raise ValidationError(
                mark_safe('<br>'.join(validation_errors)),
                'invalid_email'
            )

Я использую его с Select2, поэтому пользователи могут вводить выбор или создавать свои собственные.

Эта проверка работает хорошо, так как отображает список всех недействительных писем. Однако, если действительный адрес электронной почты также включен, он не возвращается в качестве начального значения, и пользователь должен ввести его снова.

Это может быть проблематично c Пользовательский интерфейс, если имеется 10 действительных электронных писем и 1 неверный, так как ввод будет пустым.

Как я могу вернуть действительные электронные письма?

...