Vejamos como fazer isso de um jeito bem fácil:
class SeuModelForm(forms.ModelForm):
campo1 = forms.CharField(required=False, widget=forms.TextInput(),)
campo1a = forms.BooleanField(required=False, widget=forms.CheckboxInput(),)
campo2 = forms.CharField(required=False, widget=forms.TextInput(),)
campo2a = forms.BooleanField(required=False, widget=forms.CheckboxInput(),)
campo3 = forms.BooleanField(required=False, widget=forms.CheckboxInput(),)
class Meta:
model = SeuModel
fields = '__all__'
#def clean_aceito(self):
# campo3 = self.cleaned_data['campo3']
# if not campo3:
# raise forms.ValidationError("Mensagem de erro do campo3")
# return campo3
def clean(self):
cleaned_data = super(SeuModelForm, self).clean()
campo1 = cleaned_data.get("campo1")
campo1a = cleaned_data.get("campo1a")
campo2 = cleaned_data.get("campo2")
campo2a = cleaned_data.get("campo2a")
campo3 = cleaned_data['campo3']
if not campo1 and not campo1a:
self.add_error('campo1', u'Mensagem de erro do campo1')
if not campo2 and not campo2a:
self.add_error('campo2', u'Mensagem de erro do campo2')
if not campo3:
self.add_error('campo3', u'Mensagem de erro do campo3')
Acima vemos duas possibilidades:
- Validar um campo específico, através do método clean_<campo>
- Validar o form todo, testando todos campos juntos com o método clean
hasta!
Nenhum comentário:
Postar um comentário