C'est tout très simple. J'ai ce formulaire:
{% for unit in selected_subunits %} {{ form.su%s }} % (unit.unit__id) {% endfor %}
3 Réponses :
Groupe de ces champs dans une liste supplémentaire, puis simplement itérer sur cette liste.
in dans le modèle: < / p> __ init __ code>: p>
+1: La meilleure solution n'est pas de mettre cela dans le modèle, car ce n'est pas une logique de modèle.
Qu'est-ce que j'écris à l'intérieur de la boucle pour montrer le champ de saisie? Il me semble que j'ai toujours le problème de référencer chaque nom de terrain "inconnu" dans la boucle, par exemple. ceci {{champ.su% s}}% (unité.unit__id)
Et si je viens d'écrire {{champ}} i, je reçois cela comme sortie:
Je pense que la réponse pour moi doit utiliser des constructeurs automobiles, peut-être.
Killiands: Comment le feriez-vous alors? Je suis très nouveau à Django, donc je ne suis pas aussi bien versé dans la logique du modèle que vous êtes.
@Brian: essayez {{field.render}} code>. Sinon, je vais chercher un peu plus.
@GruszCzy: J'ai rencontré exactement le même problème.
Je peux accéder au champ.Label. Mais en essayant {{champ}}, il a échoué.
Pour avoir le code ci-dessus, changez self.subunit_list.append (champ) code> pour
self.subunit_list.append (auto% d '% (Subunit [Unité__id'])] ) code>
@Brian, la réponse de ROM corrige votre problème. Ajouter auto ['Field_Name'] à votre liste par opposition à l'objet de terrain créé par le constructeur Integerfield ().
Pour accéder aux instances de champ limite pour vos instances de champ dynamiques, ce qui vous donne accès à Tous les attributs et méthodes nécessaires pour rendre le champ , vous devez accéder aux objets de champ à l'aide du formulaire de Voici un refactorisation potentiel de votre classe de formulaire: p> puis dans votre modèle, Vous devriez être capable de parcourir les champs comme vous l'attendez normalement en accédant à (je me suis battu avec ce même Problème Pendant plusieurs heures. Merci à Cette réponse de Carl Meyer et Cet artic Le sur la génération de formulaire dynamique de Jacob Kaplan-Moss pour me diriger dans les bonnes directions.) P> p> form.fieldname < / Code> plutôt que
form.fields [FieldName] code>
form.su_fields code>: p>
Merci beaucoup pour cela! J'ai eu du mal sur un projet de passe-temps personnel pendant un mois parce que je ne pouvais pas obtenir mon formulaire bien sûr. Je me sentais vraiment en bas parce que je pensais que c'était quelque chose qui devrait juste travailler mais ne pouvait pas vraiment obtenir l'incantation correcte. Vous m'avez aidé immensément.
Pour corriger la réponse de Gruszczy, ce code a fonctionné pour moi:
dans dans votre modèle: < / p> __ init __ code> de votre formulaire: p>