在A和B之间的ManyToManyField上的django“a contains b”

时间:2010-12-22 02:42:52

标签: django orm

我有两张表ABA.bsManyToManyField上的B

我想从a中获取Aa.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

其中idb的{​​{1}}替换为我想要的B

2 个答案:

答案 0 :(得分:4)

问题是什么     as = A.objects.filter(bs=b)

答案 1 :(得分:2)

您是否尝试通过其中一个自动_set属性使用反向查找?

b = B.objects.get( b_id)
a_list = b.a_set.all()

我正在通过我的手机回答,所以我无法测试这是否有效。

-Justin