Toutes les réponses que j'ai vu à ce jour m'ont confondu.Traitement dynamique MultipleChoiceField dans django
J'ai créé un formulaire construit dynamiquement en fonction d'un paramètre transmis et des questions stockées dans la base de données. Tout cela fonctionne bien (note: ce n'est pas un ModelForm, juste un formulaire).
Maintenant j'essaie d'enregistrer les réponses de l'utilisateur. Comment puis-je parcourir les données soumises afin de pouvoir les sauvegarder?
Les objets MultipleChoiceFields me troublent particulièrement. Je les définissant comme:
self.fields['question_' + str(question.id)] = forms.MultipleChoiceField(
label=mark_safe(required_tag +
question.label + "<br/>Choose any of the following answers"),
help_text=question.description,
required=question.required,
choices=choices,
widget=widgets.CheckboxSelectMultiple())
Lorsque je sélectionne plusieurs options, les données affichées réelle est quelque chose comme:
question_1=5&question_1=6
aura-t-django réaliser automatiquement que ce sont les deux options sur la même forme et laissez moi accéder à un itérable quelque part? J'allais faire quelque chose comme:
for field in self.cleaned_data:
print field # save the user's response somehow
mais cela ne fonctionne pas car cela ne retourne une fois question_1
, même si il y avait deux valeurs soumises.
Réponse: La boucle fonctionne maintenant comme prévu si la boucle I à self.fields
au lieu de self.cleaned_data
:
for field in self.fields:
print self.cleaned_data[field]
ah oui, ça marche. j'avais besoin de faire un petit tweak. merci - n'était pas sûr si je me dirigeais dans la bonne direction. – Roger
que se passe-t-il lorsque j'utilise un choix multiple dans un formulaire multipart/form-data? clean_data return Aucun! :( –