我有两张表A
和B
。 A.bs
是ManyToManyField
上的B
。
我想从a
中获取A
中a.bs
包含来自b
的某个B
的所有def get_all_A_containing_b(b):
return filter(lambda a: b in a.bs, A.objects.all())
。
我知道如何做的唯一方法就是这样:
SELECT * FROM A a
LEFT JOIN A2B a2b on a2b.a_id = a.id
LEFT JOIN B b on a2b.b_id = b.id
WHERE b.id = $b;
我更喜欢这一切都由DBMS完成,但我不想编写任何SQL代码或使用django内部。
SQL看起来像这样:(我不记得JOIN和null的语义所以这可能是错误的)
$b
其中id
被b
的{{1}}替换为我想要的B
。
答案 0 :(得分:4)
问题是什么
as = A.objects.filter(bs=b)
?
答案 1 :(得分:2)
您是否尝试通过其中一个自动_set属性使用反向查找?
b = B.objects.get( b_id)
a_list = b.a_set.all()
我正在通过我的手机回答,所以我无法测试这是否有效。
-Justin