Je voudrais sortir un certain nombre de cases à cocher dans l'un de mes modèles et je n'arrive pas à le faire fonctionner.Django - tableau de cases à cocher
Je suis en train de passer un tableau contenant forms.BooleanField() sous ma forme comme:
class ProjetSettingsForm(forms.Form):
## A bunch of form fields of no interest
arrayCheck = []
cb1 = forms.BooleanField()
cb2 = forms.BooleanField()
arrayCheck.append(cb1)
arrayCheck.append(cb2)
et sortie comme ça dans mon modèle
{% for a in form.arrayCheck %}
{{ a }}
{% endfor %}
Ma forme est appelée par une vue:
def settings(request):
if request.method == "POST" and (request.POST.get("settings_task_type", "") == "Enregistrer Task Type"):
form = ProjetSettingsForm(request.POST, proj_id=request.session['proj'])
if form.is_valid():
settings = form.save_task_type()
c = {'proj':proj, 'form':form, 'settings':settings}
return render_to_response('projet/settings.html', c, context_instance=RequestContext(request))
else:
form = ProjetSettingsForm(proj_id=request.session['proj'])
settings = ""
c = {'proj':proj, 'form':form, 'settings':settings}
return render_to_response('projet/settings.html', c, context_instance=RequestContext(request))
Mais il affiche:
<django.forms.fields.BooleanField object at 0xb595a2ec> <django.forms.fields.BooleanField object at 0xb595a22c>
Comment puis-je l'obtenir pour afficher les cases à cocher correctement?
La raison pour laquelle je dois passer les cases en tant que tableau et non pas une par une est qu'il y en aura beaucoup et je ne connaîtrai pas leur nombre exact à l'avance, cela dépend d'une requête sql.
EDIT:
Si quelqu'un vient sur ce poste, je l'ai trouvé une solution. Je n'utilise pas de formulaire lorsque je dois passer un tableau de cases à cocher.
J'envoyer le tableau directement de mon point de vue, créez les cases à cocher dans le modèle et obtenir les résultats dans request.POST.getlist('my_array')
Qu'entendez-vous par là? J'ai créé les champs à l'intérieur d'un formulaire – Johanna
Non, vous ne l'avez pas fait. Ils sont dans une liste. Utilisez une classe de formulaire Django. –
Ils sont dans une classe 'class ProjetSettingsForm (forms.Form):' Je ne l'ai pas mis dans ma question – Johanna