Джанго. Несколько сценариев проверки формы - PullRequest
1 голос
/ 01 сентября 2011

У меня есть форма с набором полей. Например, это могут быть: имя, фамилия и адрес электронной почты. Форма имеет две кнопки отправки: сохранить и закрыть. И есть два сценария проверки.

В первой после нажатия кнопки «Сохранить» форма проверяет, имеет ли поле «имя» значение или нет. Если он есть, база данных будет обновлена.

Во втором сценарии я нажимаю кнопку «Закрыть». И должна быть еще одна проверка: имя не пустое и содержит определенное значение, фамилия не пустая, а электронная почта содержит определенный домен.

Так, как я могу реализовать все эти сценарии проверки для одной формы. Я вижу только плохое решение, так как это будут некоторые операторы if-else в методе clean ().

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Я не понимаю, почему было бы так плохо иметь if / else в методе save(). Я бы, наверное, сделал что-то вроде этого:

def clean_save(self):
    #validation for the save case

def clean_close(self):
    #validation for the close case

def clean(self):
    cleaned_data = self.cleaned_data
    if cleaned_data.get('save_button'):
        return self.clean_save()
    elif cleaned_data.get('close_button'):
        return self.clean_close()
    else:
        raise ValidationError('some error message')

Я пишу это из своей головы и не проверял это, но такой подход должен быть полезен для сохранения валидации вне поля зрения.

0 голосов
/ 01 сентября 2011

Я думаю, что проверка формы должна соответствовать типам полей (например, убедитесь, что поле, которое не должно быть пустым, не является). Я бы поставил валидацию, которую вы предлагаете, в виде. Это будет что-то вроде if-then-else, но оно будет основано на нажатой кнопке.

...