Запретить проверку формы, если не заполнены хотя бы два поля - PullRequest
1 голос
/ 06 февраля 2020

Я разрабатываю приложение в Django.

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

def clean(self):
    if not (self.field1 or self.field2  or self.field3):
        raise ValidationError("you have to compile at least one field")

Теперь, как мне сказать моему коду запретить проверку формы, если не заполнены хотя бы два поля одного и того же набора полей?

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете реализовать метод clean для подсчета количества заполненных полей:

    def clean(self):
        fields = ['field1', 'field2', 'field3']
        cleaned_data = super().clean()
        filled = <b>sum(field in cleaned_data for field in fields)</b>
        if filled < 2:
            raise ValidationError('You need to fill in at least two fields.')
        return cleaned_data

Или вы можете изменить проверку на:

sum(<b>field in cleaned_data and cleaned_data['field'] not in (None, '')</b> for field in fields)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...