2012-06-10 22 views
18

Ich möchte ein Feld haben, das bedingt durch das Setzen eines booleschen Werts auf True oder False erforderlich ist.Django-Formularfeld bedingt erforderlich

Was soll ich zurückgeben, um required = True zu setzen, wenn is_company auf True gesetzt ist?

class SignupFormExtra(SignupForm): 
    is_company = fields.BooleanField(label=(u"Is company?"), 
            required=False) 
    NIP = forms.PLNIPField(label=(u'NIP'), required=False) 


def clean(self): 
    if self.cleaned_data.get('is_company', True): 
     return ...? 
    else: 
     pass 
+0

So NIP ist nur, wenn IS_COMPANY auf True gesetzt ist erforderlich:

Das Beispiel in der zugehörigen Dokumentation kann leicht an Ihrem Szenario angepasst werden? – arie

+0

Ja, genau :) – Efrin

+0

Und, hat es funktioniert? – arie

Antwort

25

Überprüfen Sie das Kapitel auf in der Dokumentation.

def clean(self): 
    cleaned_data = super(SignupFormExtra, self).clean() 
    is_company = cleaned_data.get("is_company") 
    nip = cleaned_data.get("NIP") 
    if is_company and not nip: 
     raise forms.ValidationError("NIP is a required field.") 
    return cleaned_data 
+4

Der mitgelieferte @arie-Link behandelt auch, wie man den Fehler dem Feld zuordnet, indem er die Raise-Anweisung durch self._errors ["NIP"] = self.error_class (["This Ist ein Pflichtfeld."]) – Seth