0

複数のエントリに投票すると、for ループ内のエントリごとに [投票を追加] ボタンが複製されます。投票の追加ボタンが一度だけ表示されるようにロジックを修正する方法についてのアイデアはありますか?

                    {{ user.get_profile.votes.all }}

                {% for v in user.get_profile.votes.all %}
                    {% if v.entry = e.entry %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="remove_vote" value='Remove Vote'>
                        </form>
                    {% elif v.entry != e.entry %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="add_vote" value='Add Vote'>
                        </form>
                    {% endif %}
                    {% empty %}
                        <form action="/profile/" method="post">
                        {% csrf_token %}
                        <input type='hidden' name='entry_id' value='{{ e.id }}'>
                        <input type='hidden' name='project_id' value='{{ p.id }}'>
                        <input type='hidden' name='team_id' value='{{ t.id }}'>
                        <input type='submit' name="add_vote" value='Add Vote'>
                        </form>
                {% endfor %}

スクリーンショット

4

2 に答える 2

2

Django には forloop カウンターがあり、次のように使用できます。

{% if forloop.first %}
    <input type='submit' name="add_vote" value='Add Vote'>
{% endif %}

そして、あなたのボタンはループの最初のラウンドでのみ機能します。

于 2012-10-05T12:43:41.330 に答える
1

コードを少しクリーンアップします。

          <form action="/profile/" method="post">
            {% csrf_token %}
            <input type='hidden' name='entry_id' value='{{ e.id }}'>
            <input type='hidden' name='project_id' value='{{ p.id }}'>
            <input type='hidden' name='team_id' value='{{ t.id }}'>

            {% for v in user.get_profile.votes.all %}
                {% ifequal v.entry e.entry %}
                    <input type='submit' name="remove_vote" value='Remove Vote'>
                {% elif v.entry != e.entry %}
                    <input type='submit' name="add_vote" value='Add Vote'>
                {% endifequal %}
            {% endfor %}
          </form>

else アクションはどちらの場合も同じです。エントリを確認する必要があるのは 1 回だけです。=比較のために2つ必要なテンプレートが1つあったため、テンプレートも修正しました。

于 2012-10-05T12:57:09.323 に答える