Как использовать JOIN Django ORM с Postgresql

мне нужна помощь в построении набора запросов для следующей проблемы:

У меня есть 2 разные модели:

class parentElement(models.Model):
    name  = models.CharField(max_length=50)
    date  = models.DateField()
    .... other fields
class childElement(models.Model):
    name = models.CharField(max_length=50)
    date = models.DateField()
    type = models.PositiveSmallIntegerField(
        choices=types.CHOICES, null=True, blank=True
    )
    parent_id = models.ForeignKey(
        "parentElement", related_name="rel_parent", on_delete=models.CASCADE
    )
    .... other fields

И я хочу, чтобы следующий запрос был реализован с помощью Django ORM (не в виде необработанного SQL запроса):

SELECT m.*, t1.date as type1_date, t2.date as type2_date FROM parentElement m
  LEFT INNER JOIN childElement t1 ON t1.parent_id = m.id AND t1.type = 1
  LEFT OUTER JOIN childElement t2 ON t2.parent_id = m.id AND t2.type = 2

Я не хочу использовать .raw(), есть ли решение с .annotate() и .extra()?

Вернуться на верх