表A包含字段:
id_1(int)|id_2(int)
我在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)
现在,对于变量 blocked_users 中的每个 id_1 ,都有 id3 在表B中,我想访问:
table B:
id3|id4
2 |90
5 |89
7 |87
我知道可以用for循环来完成,但有没有更好的解决方案(例如:通过 annotate 函数)?
感谢。
答案 0 :(得分: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)