2013-10-16 252 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