我有两个不相等的列表,我已将其压缩并将其作为上下文从我的 View 中传递。在我的模板中,我有一个多选下拉列表,我想在其中比较值并在下拉列表中显示所选内容。但是我无法做到这一点。 这是我的代码:- 第一个列表:-
university_all_list = Universities.objects.using('cms').all()
第二个列表:-
university_ids_list = []
school_university_mapping = SchoolAdminUniversityMappings.objects.filter(userId=cms_user)
for university_ids in school_university_mapping:
university_ids_list.append(university_ids.universityId)
print university_ids_list
合并两个列表:-
zip_list = zip(university_all_list, cycle(university_ids_list)) if len(university_all_list) > len(
university_ids_list) else zip(cycle(university_all_list), university_ids_list)
现在,在模板中使用该 zip_list:-
<div class="col-sm-8 multiselect_container">
<select class="mutisel" id="first_select" multiple="multiple"
value="university_all_list.id"
name="universityId"
id="userName" required>
{% for university,id in zip_list %}
{% if id == university.id %}
<option value="{{ university.id }}"
selected>{{ university.name }}</option>
{% else %}
<option value="{{ university.id }}"
>{{ university.name }}</option>
{% endif %}
{% endfor %}
</select>
<script>
$("select.mutisel").multipleSelect({
filter: true,
placeholder: "Select",
});
</script>
</div>
但在多选中没有选择任何下拉菜单。
最佳答案
处理不等长度的列表时,您应该使用 itertool izip_longest
Make an iterator that aggregates elements from each of the iterables. If the iterables are of uneven length, missing values are filled-in with fillvalue. Iteration continues until the longest iterable is exhausted.
按照文档中的建议,您需要为缺失的条目设置默认值。
话虽如此,需要对数据库记录使用 zip 或 izip_longest 是最不寻常的。这种情况可以使用 Django ORM 完全支持的联接在数据库级别轻松处理。 Universities
和 SchoolAdminUniversityMappings
之间有什么关系?你明确声明了吗?
关于python - 如何比较 django 中不相等的邮政编码列表中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44341145/