当我投票支持多个条目时,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 %}
答案 0 :(得分:1)
在Django你有一个forloop计数器,你可以像这样使用它:
{% if forloop.first %}
<input type='submit' name="add_vote" value='Add Vote'>
{% endif %}
你的按钮只会在循环的第一轮。
答案 1 :(得分: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动作都相同;你只需要检查一次输入。我还修改了你的模板,因为你有一个=
,你需要两个进行比较。