2017-07-03 57 views
0

這裏有一個表的字段答:高效Django的查詢使用註釋功能

id_1(int)|id_2(int) 

我有一個查詢writen上ID_2:

blocked_users = bl_.objects.filter(id_2=request.user.id); 
#for a single value of id_2,there are multiple entries,like: 
id1|id2 
2 |3 
5 |3 
7 |3 

沒有與字段的表B:

id_3(int)|id4(int) 

現在,每id_1中的變量:被阻止_users,有ID3 表中的B,這是我想要訪問:

table B: 
id3|id4 
2 |90 
5 |89 
7 |87 

我知道這是可以做到的for循環,但有這個(如一個更好的解決方案:通過註釋函數)?

謝謝。

回答

1

可以使用values_list()從表A獲得的id_1列表

blocked_users = bl_.objects.filter(id_2=request.user.id).values_list('id_1',flat=True); 

,然後查詢你的桌子上,爲匹配您blocked_users列表中id_1值之一的所有行。

result=B.objects.filter(id_3__in=blocked_users)