Мне нужно перевести этот запрос в Django ORM, но, похоже, я не могу его найти.
Я пытался найти любую комбинацию аннотаций / значений / фильтров, которую смог найти, но я так и не получил ее. чтобы присоединиться, как это (ни для исправления результатов). Я (пока) не пытался определить собственный менеджер.
SELECT
t.id,
t.name,
dt.deadline
dt.deal_id
FROM
dealtask dt
JOIN task t
ON dt.task_id = t.id
JOIN (
SELECT MIN(deadline) as min_deadline, task_id
FROM dealtask
GROUP BY task_id
) dt2
ON dt.task_id = dt2.task_id
WHERE dt.deadline = dt2.min_deadline
Мои модели следующие:
class DealTask(models.Model):
deadline = models.DateTimeField(blank=True, null=True)
deal = models.ForeignKey('Deal', on_delete=models.CASCADE)
task = models.ForeignKey('Task', on_delete=models.CASCADE)
class Task(models.Model):
name = models.CharField(max_length=128)
Я хочу запросить: для каждой задачи t ближайший крайний срок DealTask dt, связанный с ним, и Deal, связанный с этим dt.
Возможен ли этот запрос в Django ORM? Я имею в виду постоянное число запросов.
Кроме того, если вы найдете более простой запрос, выражающий одно и то же, я весь слух.