В Django Documentation предложенный способ проверки полей, которые зависят друг от друга, находится в методе clean()
формы. Это имеет смысл, но проблема, с которой я имею дело, заключается в том, как уведомить мнение о том, какие поля вызывают проблемы.Django: проверка нескольких полей
Когда это только одно поле, кто терпит неудачу, я могу проверить это следующим образом:
for field in form:
if field.errors:
# I know exactly in what field is the problem
Но если ошибка происходит от метода clean()
, все, что я получил это сообщение об ошибке:
if form.errors:
for error in form.errors:
# I know there's a problem, and I got an error message,
# but I don't know what are the fields that cause it.
Подумайте в типичной регистрационной форме, где вы должны дважды написать письмо и дважды пароль, чтобы избежать опечаток. Например, я хочу изменить класс CSS двух полей пароля, если они имеют разные значения, но в представлении у меня нет ссылки на виджет, вызывающий проблему. Единственная информация, которая у меня есть, - это сообщение об ошибке, выведенное ValidationError в методе clean()
формы. Как узнать, связана ли проблема с полями пароля или полями электронной почты? И я думаю, что разбор этого сообщения об ошибках - это не выход.
Я видел это, но проблема в том, что ошибка, о которой я говорю, включает в себя несколько полей, а не только одну. –
Как это важно? Когда вы устанавливаете ошибку самостоятельно, вы определяете, какое поле (и) оно будет отображаться. Вы ищете 'form.non_field_errors'? –
Вы правы, спасибо :-) –