2017-09-28 4 views
0

Je travaille sur une application django et plus spécifiquement sur un formset (groupe de formulaires). J'ai la quantité de jeu de formulaire définir le nombre d'objets récupérés par un jeu de requête. Ce que je veux faire est de faire une modification à l'ensemble de formulaires afin que, entre chacun des formulaires dans le formset, incluez un nom pour un utilisateur lié à l'ensemble de formulaires. Ce qui se passe en ce moment, c'est qu'il imprime tout le formset puis les noms que je veux déplacer sont placés entre chaque forme dans le formset.Ajout de contenu entre formulaire dans Formset_Factory = Django

** mise à jour **.

Maintenant, ce qui se passe est que, entre chacune des différentes formes qui sont itérées, Il affiche tous les objets qui sont affichés. Mon problème est que je ne veux que le premier objet de la liste à imprimer avant le premier formulaire, les seconds objets à afficher avant le second formulaire. et ainsi de suite ...

échantillon de ce qui se passe:

Add expense - restructured group 
Please complete the form below 

josh 
lifter 
omar 
Amount: 0 
Description: expense 

josh 
lifter 
omar 
Amount: 0 
Description: expense 

josh 
lifter 
omar 
Amount: 0 
Description: expense 

submit 

Je veux qu'il montre que le premier nom pour la première forme et ainsi de suite. Voici le code:

{% extends "base.html" %} 

{% block content %} 
    <h2>Add expense - {{ currentGroup.name }}</h2> 
    {% if message %} 
    <p>{{message}}</p> 
    {% endif %} 
    <form action="." method="POST"> 
    {% csrf_token %} 
    {{ form.management_form }} 
    {% for f in form %} 
     {% for expense in expenses %} 
     <p>{{ expense.user.username }}</p> 
     {% endfor %} 
     {{ f.as_p }} 
    {% endfor %} 
    <input type="submit" name="submit" value="submit"> 
    </form> 
{% endblock %} 

Répondre

1

Vous pouvez itérer forme var dans le modèle et peut ajouter de l'information entre la forme, mais assurez-vous que vous devez ajouter {{ form.management_form }} également sous forme comme ci-dessous le code

<form action="." method="POST"> 
    {% csrf_token %} 
    {{ form.management_form }} 
    {% for f in form %} 
    {# Add whatever information you want to show between forms #} 
    {{ f.as_p }} 
    {% endfor %} 
    {% for expense in expenses %} 
     <p>{{ expense.user.username }}</p> 
    {% endfor %} 
    <input type="submit" name="submit" value="submit"> 
    </form> 
+0

Merci, cela a fonctionné . mais maintenant j'ai une autre question. Je me suis amusé avec ça, mais maintenant, il parcourt toute la liste des objets entre chacun des champs de différences. s'il vous plaît vérifier la question de mise à jour ... @neerajkumar –

+0

si vous regardez la section mise à jour de poste orignal, j'ai implémente la méthode que vous aviez. J'ai trois formes et trois utilisateurs. Il est actuellement en train de parcourir tous les objets de la liste entre chacun des formulaires créés. Donc, tous les utilisateurs forment, tous les utilisateurs que le formulaire, et ainsi de suite. Je veux trouver un moyen pour que l'utilisateur forme puis forme l'utilisateur, et ainsi de suite tous les utilisateurs ne se forment pas. J'ai mis à jour le message original. @neerajkumar –

+0

cela vous aide-t-il à comprendre –