У меня есть две таблицы 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())
Я бы предпочел, чтобы все это делалось СУБД, но я не хочу писать какой-либо код SQL или использоватьвнутренности django.
SQL выглядел бы примерно так: (я не могу вспомнить семантику JOIN и null, поэтому это может быть неправильно)
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;
, где $b
замененос id
из b
из B
Я хочу.