Rrooom
@Rrooom

Можно ли «сджойнить» django queryset с кастомным sql-запросом?

Есть довольно сложный агрегирующий (? вроде так) запрос.
SELECT mymodel.id as id,
SUM(...),
SUM(...)
COUNT(...)
FROM anothermodel
JOIN ... JOIN ...
WHERE mymodel.id IN (1,2,3,4)
GROUP BY mymodel.id,  anothermodel.country

Его легко можно вызывать - MyModel.objects.raw(query). Отдельно работает отлично - и агрегированные данные доступны и поля моедли автоматом присоединились по id.

А можно наоборот? Есть queryset MyModel.objects.filter(...).exclude(...). Как к нему присоединить данные raw запроса? Обычные extra не подходят, потому что данные извлекаются из другой таблицы (которая через четыре форейн кея соединена).
  • Вопрос задан
  • 2787 просмотров
Пригласить эксперта
Ответы на вопрос 2
Можно через extra/where, просто запрос будет не через join, а через подзапрос

select ... where id not in (select ...)
Ответ написан
Комментировать
@ivique
Сделайте database view из запроса и добавьте её как unmanaged модель.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы