2012-10-15 79 views
0

我有一個場景,我必須匹配名單和姓氏對列表,但我找不到解決方案。對於一個記錄它工作正常,但列表不起作用。django過濾器使用兩列兩列

user.objects.filter(firstname ='john',lastname='doe') it is working fine. 

但在列表的情況下:

list1 = ['john','mark','john'] 
list2 = ['doe','waugh','peter'] 

約翰·彼得是不是在數據庫可用。但由於第一場比賽的結果,它帶來了第三個紀錄。 另外,在db中它有很多記錄,但它應該返回john doe並標記waugh。它應該跳過約翰彼得。

user.objects.filter(firstname__in =list1,lastname__in=list2) 
+0

它爲什麼要滑雪約翰彼得? –

+0

ohn peter在db中不可用。但由於第一場比賽,它帶來了第三名 – user493550

回答

0

該行爲是正確的,因爲__in不是確切的查詢。

有兩種選擇:

1)切換到針對每個元組精確查詢(姓名,姓)的同時在第一個例子中那樣

2)鏈,所述第二查詢的exclude filter,以避免顯示這不都是在列表1和List2

0

一個可能的解決方案項是使用Q對象:

query = Q() 
for firstname, lastname in zip(list1, list2): 
    query |= Q(firstname=firstname, lastname=lastname) 
user.objects.filter(query)