2013-10-16 325 views
0

我尝试从联系人生成电子邮件分发列表。在我的页面上,我使用每个列表的复选框。在我的Django视图中,我有:删除重复项

context['distribution_list'] = [] 
for entry in request.GET: 
    context['distribution_list'].extend(list(Contact.objects.all().filter(lists__name__exact=entry))) 

这似乎工作,但我仍然有重复项。删除重复项的最佳方法是什么?

非常感谢!

+0

如果顺序并不重要,它只是一个'上下文[ 'distribution_list'] =名单(套(背景[ 'distribution_list']))'后的for循环。 – Matthias

回答

0

我还不确定for entry in request.GET:是如何工作的。

但是,您可以使用distinct() filter

entries = [entry for entry in request.GET] 
Contact.objects.filter(lists__name__in=entries).distinct() 
+0

通过'在request.GET'中输入,我得到了所有激活的复选框的名称,因此我想查询分配列表。然后我必须为每个列表进行查询并扩展“distribution_list”。如果某个联系人位于多个列表中,则该联系人不止一次位于该列表中。这些是我想删除的重复内容。 – user2496550

+0

使用'distinct()'子句,就像我在回答 – karthikr

+0

中提到的那样。但是这不仅仅是确保每个查询的结果都没有重复吗?问题的存在是因为我使用其他查询的结果来扩展'distribution_list',而这些查询可能包含'distribution_list'中已存在的条目。 – user2496550