Сделать форму неверной, не вызывая ValidationError в Django - PullRequest
0 голосов
/ 13 июля 2009

Я бы хотел, чтобы форма была недействительной без вызова ValidationError ни в одном из чистых методов формы или поля формы. Причина этого заключается в том, что форма является «суперформой» для набора «подформ», и я хочу, чтобы суперформа была недействительной, когда любая из ее подформ недействительна. Но эта недействительность не влечет за собой появление ошибки ValidationError в супер-форме, и на самом деле я не хочу вызывать ошибку ValidationError в супер-форме, потому что я не хочу, чтобы какое-либо сообщение об ошибке появлялось в списках ошибок супер-формы (избегая отображения сообщение об ошибке в супер-форме non_field_errors является моей главной мотивацией.) Одним из способов для меня было бы проверить как супер-форму, так и ее подформы для is_valid в представлении, но я предпочитаю проверять только super form и имеет is_valid return False, даже если его поля действительны, но когда одна или несколько его подформ возвращают False в is_valid. Спасибо.

1 Ответ

1 голос
/ 13 июля 2009

Почему бы вам не переопределить метод is_valid?

class SuperForm(forms.Form):
  def is_valid(self):
    return forms.Form.is_valid(self) and all(form.is_valid() for form in self.sub_forms)
...