Je suis plutôt nouveau à Django et j'utilise Django 1.0. J'ai ceci:
forms.py:Django forme avec juste un BooleanField
class MyForm(forms.Form):
extra_cheeze = forms.BooleanField(required=False,
initial=False,
label='Extra cheeze')
views.py:
def order_something(request):
form = MyForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
# do stuff...
Le problème est que la forme n'est pas valide que si la case est cochée, donc il ne semble pas être un moyen d'obtenir une valeur False sur le terrain. Pour autant que je peux comprendre de the docs, cela devrait fonctionner. Cela fonctionne si j'ajoute un CharField à mon formulaire ...
Ai-je mal compris quelque chose ici ou est-ce un bug? (Oui, je l'ai googlé mais rien trouvé pertinent)
Mise à jour: Comme suggéré par @Dominic Rodger, j'ai essayé d'ajouter un champ caché
dummy = forms.CharField(initial='dummy', widget=forms.widgets.HiddenInput())
et qui fait la forme valide. Cette solution de contournement me permet d'avancer maintenant, mais il serait toujours intéressant de savoir si j'ai mal compris quelque chose ...
Huh. Ça me semble être un bug. Pourriez-vous contourner ce problème en utilisant un champ caché? –
Il y a eu quelques rapports de bogues qui semblent un peu similaires - voir http://www.google.co.uk/search?q=django+checkbox+forms+bug –
Je vais essayer. Je soupçonne que le formulaire n'aime pas les données vides, puisque le navigateur n'inclura pas le champ pour une case non cochée. – Niklas