1

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')

Répondre

3

Ne pas utiliser les champs de formulaire en dehors d'un formulaire. Ils ne fonctionnent pas comme ça. Créez un formulaire avec un MultipleChoiceField.

+0

Qu'entendez-vous par là? J'ai créé les champs à l'intérieur d'un formulaire – Johanna

+0

Non, vous ne l'avez pas fait. Ils sont dans une liste. Utilisez une classe de formulaire Django. –

+0

Ils sont dans une classe 'class ProjetSettingsForm (forms.Form):' Je ne l'ai pas mis dans ma question – Johanna