2012-06-10 25 views
18

Me gustaría tener un campo que se requiere condicionalmente basado en establecer un valor booleano en verdadero o falso.campo de formulario de Django requerido condicionalmente

¿Qué debo devolver para establecer required = True si is_company está establecido en True?

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

Así NIP sólo es necesario si is_company se establece en True? – arie

+0

Sí, exactamente :) – Efrin

+0

¿Y funcionó? – arie

Respuesta

25

Consulte el Capítulo en Cleaning and validating fields that depend on each other en la documentación.

El ejemplo dado en la documentación se pueden adaptar fácilmente a su escenario:

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

El enlace @arie proporcionado también cubre cómo asociar el error con el campo reemplazando la instrucción raise con self._errors ["NIP"] = self.error_class (["This es un campo obligatorio."]) – Seth

Cuestiones relacionadas