如何引发多个非现场错误

How to raise multiple non-field errors

clean方法是引发非字段错误的地方:

def clean(self):
   cleaned_data = super(MyForm, self).clean()
   if condition1(cleaned_data['f1'], cleaned_data['f2']):
       raise ValidationError('Condition1 error')

   if condition3(cleaned_data['f3'], cleaned_data['f4']):
       raise ValidationError('Condition2 error')

但是,如果我想同时提出这两个错误,以便用户立即看到所有错误,而不是必须一个一个地更正,该怎么办?

字段错误将字典传递给 ValidationError 是可能的,但是非字段错误呢?

您可以使用表格 add_error method 来执行此操作:

if condition1(cleaned_data['f1'], cleaned_data['f2']):
   self.add_error(None, ValidationError('Condition1 error'))

if condition3(cleaned_data['f3'], cleaned_data['f4']):
   self.add_error(None, ValidationError('Condition2 error'))