Как использовать 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()
?