2012-10-02 6 views
0

J'ai une application Django qui permet aux gens de créer un enregistrement. Un enregistrement peut contenir une ou plusieurs personnes et le formulaire contient par défaut trois champs pour capturer le nom d'une personne. Un pour le prénom, un pour l'initiale du milieu et un pour le nom de famille. Lorsqu'une personne crée un enregistrement, elle peut ajouter des personnes supplémentaires en cliquant sur un bouton plus. Le bouton plus ajoute un autre ensemble de trois zones de texte. Ils peuvent le faire pour autant de personnes qu'ils veulent ajouter. Une fois qu'ils cliquent sur le bouton plus un bouton moins apparaît à côté de chaque ligne afin qu'ils puissent supprimer ces champs s'ils décident de le faire.Meilleure façon d'obtenir des champs dynamiques dans Django

Quelle est la meilleure façon de nommer les champs de texte afin que je puisse obtenir tous les champs de texte et les parcourir dans l'arrière-plan de l'application?

Je pensais que si je les ai nommés tout de même que je recevrais un tableau de noms quand je fais:

request.POST.getlist('firstname') 

Cependant, ce n'est pas le cas. Au lieu de cela, j'obtiens la valeur du dernier champ de saisie avec ce nom.

Toutes les suggestions sont appréciés.

Répondre

0

Je vous suggère de jeter un oeil aux formsets au lieu de réinventer celui-ci.

https://docs.djangoproject.com/en/dev/topics/forms/formsets/

from django.forms.formsets import formset_factory 

FormSet = formset_factory(MyForm, extra=2) 
formset = FormSet() 
print formset.forms # you will see it is a collection of MyForm objects 

Vous pouvez dynamiquement ajouter/supprimer formsets en modifiant un la « forme de gestion » et en ajoutant la forme suivante (vous pouvez copier {{ formset.empty_form }} et modifier les ID de la forme N-ième) et il y a beaucoup d'exemples en ligne de la façon de le faire:

How would you make a dynamic formset in Django?
Dynamically adding a form to a Django formset with Ajax

Questions connexes