如何比较django中不等号码列表中的值?

时间:2017-06-03 06:42:35

标签: python django

我有两个不相等的列表,我已将其压缩并从我的视图中将其作为上下文传递。在我的模板中,我有一个多选下拉列表,我想比较值并在下拉列表中显示所选内容。但是我无法实现这一点。 这是我的代码: - 第一个清单: -

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>

但是在多选中没有选择任何下拉列表。

1 个答案:

答案 0 :(得分:1)

在处理不等长的列表时,你应该使用itertool izip_longest

  

创建一个聚合来自每个迭代的元素的迭代器。   如果迭代的长度不均匀,则填充缺失值   有fillvalue。迭代继续,直到最长的可迭代为止   耗尽。

正如文档中所建议的那样,您需要为缺少的条目设置默认值。

说过最不常见的是需要将zip或izip_longest与数据库记录一起使用。使用Django ORM完全支持的连接可以在数据库级别轻松处理这种情况。 UniversitiesSchoolAdminUniversityMappings之间的关系是什么?你明确地声明了吗?