2011-10-19 79 views
14

Quiero agregar una casilla de verificación a mi campo de registro para los términos & uso. ¿Cómo puedo escribir un método limpio para validar esto?Validación de entrada CheckBox en Django

He escrito un método limpio donde quiero estar seguro de que me estoy poniendo al valor casilla correcta:

def clean_terms(self): 
     if self.cleaned_data["terms"] == u'on': 
      raise forms.ValidationError(
       "You have to accept terms&conditions to complete registration" 
      ) 

Como resultado, cuando lleno mi formulario de registro y que lo ponga, me da esta validación error:

Términos & Condiciones: Seleccione una opción válida. no es una de las opciones disponibles.

Entonces, ¿cómo puedo entender que se marque una casilla de verificación y cómo implementar correctamente un término casilla de verificación &?

Mi campo de casilla:

terms = forms.ChoiceField(
    label="Terms&Conditions", 
    widget=forms.CheckboxInput() 
) 
+0

¿Quizás debería mostrarnos cómo está definiendo la casilla de verificación en primer lugar? –

Respuesta

21

No utilice una ChoiceField para una sola casilla. Use un BooleanField.

terms = forms.BooleanField(
    error_messages={'required': 'You must accept the terms and conditions'}, 
    label="Terms&Conditions" 
) 

Ni siquiera necesita un método clean_.

Cuestiones relacionadas