这听起来可能与使用zip
和其他选项比较两个查询集的其他帖子非常相似,但我一直在阅读很多,但没有一个能让我知道我能为比较我需要做些什么。
首先,我从数据库获取查询,在HTML模板中我需要为select
元素生成一些默认值。有一个默认值很容易,但multiple
我遇到麻烦,因为Django模板中没有break
。
假设我从后端返回了这两个查询集:
[<J: j1>, <J: j2>, <J: j3>, <J: j4>]
[<J: j2>, <J: j4>]
我尝试过这样的事情,我可以理解它的循环超过了需要,所以我得到的输出也超过了需要。我试着寻找会破坏循环的东西,但我认为在Django模板中没有分解循环。
<select name="" id="">
{% for j in all_j %}
{% for s in all_s %}
{% if j.id == s.id %}
<option value="{{ j.id }}" selected="selected">{{ j.name }}</option>
{% else %}
<option value="{{ j.id }}">{{ j.name }}</option>
{% endif %}
{% endfor %}
{% endfor %}
</select>
我尝试了其他方法,例如
<select name="" id="">
{% for s in all_s %}
{% if s in all_j %}
<option value="{{ j.id }}" selected="selected">{{ j.name }}</option>
{% else %}
<option value="{{ j.id }}">{{ j.name }}</option>
{% endif %}
{% endfor %}
</select>
然后我认为如果它是真的那么它只会被输出,else
中的东西不会运行。
有人可以给我一个想法或知道我可以用这种情况做些什么吗?
以下是我想要实现的目标。
答案 0 :(得分:2)
试试这个:
<强> views.py 强>
from django.shortcuts import render
def home(request):
context = {
'all_s': ['j1', 'j2', 'j3', 'j4'],
'all_j': ['j2', 'j4']
}
return render(request, 'index.html', context)
<强>的index.html 强>
<html>
<header>
<title></title>
</header>
<body>
<select name="bla" id="" multiple style="width: 200px;">
{% for s in all_s %}
{% if s in all_j %}
<option value="{{ s }}" selected="selected">{{ s }}</option>
{% else %}
<option value="{{ s }}">{{ s }}</option>
{% endif %}
{% endfor %}
</select>
</body>
</html>
结果: