Как написать «из предложения» в Django? - PullRequest
0 голосов
/ 07 ноября 2010

Предположим, есть две модели m1 и m2, и теперь нам нужно выполнить запрос, равный "SELECT * FROM m1, m2", в django.Как это сделать?Спасибо.

Ответы [ 2 ]

1 голос
/ 07 ноября 2010

Полагаю, вы понимаете, что опубликованный вами SQL создает декартово соединение между таблицами m1 и m2? То есть ваш набор результатов включает в себя все возможные строки из m1, объединенные со всеми возможными строками из m2, поэтому, если у вас есть 5 строк в одной таблице и 10 в другой, вы получите 50 результатов.

Если это действительно то, чего вы хотите, и я не могу понять, почему вы этого хотите, то в Django ORM нет простого способа сделать это.

Однако, если то, что вы на самом деле имели в виду, было простым JOIN:

SELECT * from m1, m2 WHERE m1.m2_id = m2.id;

тогда вы можете добиться чего-то похожего с помощью метода select_related().

0 голосов
/ 07 ноября 2010

РЕДАКТИРОВАТЬ:

m1.objects.all () + m2.objects.all ()

list(m1.objects.all()) + list(m2.objects.all())

Но .. Даниэль Роузман имеет очень хорошийпункт о декартовом произведении - если вы это имели в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...