2009-10-09 6 views
0

Comment puis-je savoir si une case à cocher est cochée (Vrai, 1) avec juste la forme {{form.checkbox}} marque?Comment savoir si une case à cocher est cochée avec juste la balise de formulaire {{formickeck}}

'activo' est défini comme (True, 1) dans le db.

Mon modèle est:

{{ form.activo }} 
RESULTS: 
<input id="id_activo" type="checkbox" name="activo" checked="checked"/> 

{{ form.activo.data }} 
RESULTS: 
False 

{{ form.activo.value }} 
RESULTS: 
"" 

de pas encore de 1 ou de ses véritables viennent à travers. : S

Tout indice est apprécié. = ')

Répondre

1

Il est vérifié si request.POST.has_key (' activo ') ou {{form.activo.data}} renvoie réellement True lors de l'initialisation avec request.POST. Votre question n'est pas très claire, mais peut-être que votre problème a quelque chose à voir avec le fait que les navigateurs ne placent rien dans les données POST pour une case à cocher non cochée. Cela a rendu les choses compliquées pour moi lorsque j'ai dû faire la différence entre une case à cocher qui ne s'affichait pas du tout et une case à cocher affichée qui n'avait pas été vérifiée. Juste en regardant les données POST, vous ne pouvez pas différencier ces deux cas.

+0

mais il n'y a aucun moyen de connaître les données qui apporte la forme bornée? myform = TheForm (instance = mymodel), myform est livré avec des données remplies. – panchicore

0

Si vous voulez une condition booléenne dans les modèles cela devrait fonctionner:

{% if form.activo %} 
-- 
{% else %} 
--- 
{% endif %} 
+0

@Saurabh {% if form.activo%} n'a pas de sens, cuz form.activo vient toujours dans le formulaire, et ce qu'il affiche est un code html. – panchicore

1

À la suite de votre réponse à la réponse de mbarkhau, en utilisant instance= ne fait pas la forme liée, il fournit simplement les valeurs par défaut à la forme .

est ici la logique dans un modèle:

{% if form.is_bound %} 
    {% if form.initial.activo %} 
     Checked. 
    {% else %} 
     Not checked. 
    {% endif %} 
{% else %} 
    {% if form.activo.data %} 
     Checked. 
    {% else %} 
     Not checked 
    {% endif %} 
{% endif %} 

Mais il est plus logique de faire cette logique dans la vue et passer contexte supplémentaire. Quelque chose comme:

context_data = {...} 
if form.is_bound: 
    activo = form.data.get('activo') 
else: 
    activo = form.initial.get('activo') 
context_data['activo'] = bool(activo) 
return render_to_response('your_template.html', context_data) 
Questions connexes