Query Set Annotate с двумя разными наборами запросов - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в объединении двух наборов запросов с помощью манипуляций django orm. Вот моя просьба. У меня есть два набора данных. 1-й набор данных имеет три столбца: datetime, col1, а 2-й набор данных имеет start_date, end_date, week_num. Выходные данные должны быть weeknum, col1. Как я могу использовать Django, чтобы объединить эти две модели?

Первый набор данных:

datetime              col1
2018-10-04 08:00:00   10

Второй набор данных:

start_date            end_date               week_num
2018-10-04 07:00:00   2018-10-11 07:00:00    42

Набор выходных данных:

weeknum              col1
42                    10

Пока мой код:

qs1=models.dataset1.objects.all()
qs2=models.dataset2.objects.all()

Я знаю, что просто добавляю базовые наборы данных, но я не могу двигаться дальше.

SQL-запрос для этого будет выглядеть так:

 select weeknum, col1 from datatset1 d1, dataset2 d2 where 
 d1.datettime>d2.start_date and d1.datetime<d2.end_date; 

Любая помощь в этом очень ценится. Благодаря.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы не сможете использовать наборы запросов для объединения, поскольку они предназначены для конкретной модели (за исключением прокси и абстрактных моделей).

Однако вы можете использовать понимание списка дляобъедините их или используйте itertools.chain (более эффективный), чтобы объединить два результата из наборов запросов.

Однако вы потеряете из-за «лени» набора запросов, что может привести к снижению производительности позже.

...