2011-10-19 3 views
14

Desidero aggiungere una casella di controllo al campo di registrazione per l'uso dei termini &. Come posso scrivere un metodo pulito per convalidarlo.Validazione input CheckBox in Django

Ho scritto un metodo pulito dove voglio essere sicuro che sto cattura di valore casella di controllo in modo corretto:

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

Di conseguenza quando riempio il mio modulo di registrazione e post-it, mi dà questa convalida errore:

Termini & Condizioni: selezionare una scelta valida. on non è una delle opzioni disponibili.

Quindi, come posso capire che una casella di spunta è spuntata e come implementare correttamente un termine & usare la casella?

Il mio campo casella di controllo:

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

Forse dovresti mostrarci come stai definendo la casella di controllo in primo luogo? –

risposta

21

Non utilizzare un ChoiceField per una singola casella di controllo. Utilizzare uno BooleanField.

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

Non hai nemmeno bisogno di un metodo clean_.