Django ORM JOIN and LEFT JOIN
Всем привет помогите не могу составить запрос на Django.Мне нужен вот такой запрос сделать.
SELECT * FROM "crudapp_infohospitals" AS "hospital"
JOIN "crudapp_infohospitals" AS "filiate" ON ( "hospital"."id" = "filiate"."parentId_id")
LEFT JOIN "crudapp_valuehospitals" AS "value" ON ("filiate"."id" = "value"."fkHospitals_id")
WHERE "hospital"."userFK_id" = 1
не чего не выходит с LEFT JOIN. Много перерым тем в интернете и не получается. вот что пробовал:
InfoHospitals.objects.filter(parentId__userFK__id=1) вот тут INNER JOIN
ValueHospitals.objects.filter(fkHospitals__parentId__userFK__id = id) тут два INNER JOIN .
class InfoHospitals(models.Model):
avatar = models.ImageField(blank=True)
names = models.CharField(max_length=255, blank=True, null=True)
shortName = models.CharField(max_length=255, blank=True, null=True)
parentId = models.ForeignKey('self', null=True, on_delete=models.CASCADE)
userFK = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
class ValueHospitals(models.Model):
create_date = models.DateField(auto_now_add=True, db_index=True)
subordination = models.CharField(max_length=255, blank=True, null=True)
nameWLO = models.CharField(max_length=255, blank=True, null=True)
subjectRF = models.CharField(max_length=255, blank=True, null=True)
dislocationWLO = models.CharField(max_length=255, blank=True, null=True)
fkHospitals = models.ForeignKey(InfoHospitals, on_delete=models.CASCADE)
Не совсем ответ на Ваш вопрос, но все же.
Метод raw() можно использовать для выполнения необработанных SQL-запросов, которые возвращают экземпляры модели. Пример из документации:
Person.objects.raw('SELECT id, first_name, last_name, birth_date FROM myapp_person')
https://docs.djangoproject.com/en/4.1/topics/db/sql/