私はクリーンメソッドでこのようなことをしてきました:
if self.cleaned_data['type'].organized_by != self.cleaned_data['organized_by']:
raise forms.ValidationError('The type and organization do not match.')
if self.cleaned_data['start'] > self.cleaned_data['end']:
raise forms.ValidationError('The start date cannot be later than the end date.')
ただし、これは、フォームが一度にこれらのエラーを 1 つしか発生させないことを意味します。フォームがこれらのエラーの両方を発生させる方法はありますか?
編集#1:上記の解決策は素晴らしいですが、次のようなシナリオでも機能するものが大好きです:
if self.cleaned_data['type'].organized_by != self.cleaned_data['organized_by']:
raise forms.ValidationError('The type and organization do not match.')
if self.cleaned_data['start'] > self.cleaned_data['end']:
raise forms.ValidationError('The start date cannot be later than the end date.')
super(FooAddForm, self).clean()
FooAddForm は ModelForm であり、エラーを引き起こす可能性のある一意の制約があります。誰かがそのようなことを知っていれば、それは素晴らしいことです...