Как выбрать много, используя Django QuerySet? - PullRequest
0 голосов
/ 01 октября 2010

Предположим, у меня есть две модели, A и B, где A может иметь несколько B s, связанных с ним.Учитывая QuerySet из A объектов, как я могу создать QuerySet, содержащий все B объекты, относящиеся ко всем этим A объектам?

Для тех, кто также говорит на LINQ, я хочу что-то вродеthis:

queryableOfA.SelectMany(a => a.Bs)

Еще лучше было бы привести пример цепочки A -> B -> C, то есть следующий LINQ:

queryableOfA.SelectMany(a => a.Bs).SelectMany(b => b.Cs)

(возвращающий «набор запросов» извсе C объекты, связанные со всеми A объектами через B)

1 Ответ

4 голосов
/ 01 октября 2010

Для набора запросов объектов A вы можете выполнить начальный запрос «in»:

B.objects.filter(a__in=MyQueryset) 

Если вы хотите найти все объекты C, связанные через B с A, вам нужно следовать отношениям через синтаксис с двойным подчеркиванием. Что-то вроде:

C.objects.filter(b__a__in=MyAQueryset)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...