2017-09-28 9 views
0

私はformset_facotryで作業していますが、何かを見つけようとする際に問題が発生しています。djangoテンプレートのリストから特定のオブジェクトを選択する

私は、クエリセットから返されたユーザーのリストをviews.pyファイルに持っています。私はまた、リストクエリから返されたオブジェクトの数に基づいて作成されたフォームのリストを持っています。私は、返される最初のオブジェクトを選択して、表示される最初のフォームの前に表示することをやりたいと考えています。そして、第2の目的をつかみ、右二番目の形式前にそれを表示するというように...その背後にある一般的な考え方はfollowoingです:

私はそれがこの一般的なテンプレートのような何かをしたい:

header = 'Add record' + groupName 
if message: 
    print(message) 
count = 0 
for f in form: 
    expenses[0] 
    f.as_p 
    count = count + 1 

私はループ内のカウント数に基づいて特定のアイテムをつかむしたい:ここ

は、私はテンプレートを持っているコードです:

{% 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 }} 
    {% with count=0 %} 
     {% for f in form %} 
     {% for expense in expenses %} 
      <p>{{ expense.user.username }}</p> 
     {% endfor %} 
     {{ f.as_p }} 
     {% endfor %} 
    {% endwith %} 
    <input type="submit" name="submit" value="submit"> 
    </form> 
{% endblock %} 

誰かが私が把握することができますあなたは1ベースのカウンタであるforloop.counterにアクセスすることができますHTMLテンプレート

答えて

1

は、テンプレートのループであなたのために動作します

{% for f in form %} 
    {% for expense in expenses %} 
     {% if forloop.parentloop.counter == forloop.counter %} 
      <p>{{ expense.user.username }}</p> 
     {% endif %} 
    {% endfor %} 
    {{ f.as_p }} 
{% endfor %} 
+0

forms_and_users = zip(forms_list, users_list) # Add forms_and_users to template context 

。あなたはそんなに大変です。私は本当にそれを感謝@neerajkumar –

0

に設定されたオブジェクト内の特定のオブジェクトを反復処理し、指定する方法:私はコードの下だと思う

{% for expense in expenses %} 
    {% if forloop.counter == 25 %} # this is the 25th, not 26th item 
     do stuff 
    {% endif %} 
{% endfor %} 
0

あなたが一緒にを反復処理することを可能にするために2つのリストを結合するであろう、python's zip() functionを探しているような音。ビュー内でリストを一緒に圧縮し、テンプレート内の新しいリストを反復処理する必要があります。ビューで

:それは完全に働いたテンプレート

{% for form, user in forms_and_users %} 
    {{ user }} 
    {{ form }} 
{% endfor %} 
関連する問題