Как внутреннее объединить 4 таблицы в Django? - PullRequest
1 голос
/ 31 января 2020

Мы хотим получить все записи таблицы одновременно, как реализовать SQL запросы в django orm.

Пример SQL query:

select * 
from Company_info 
inner join Bank_info on Bank_info.manufacturer = Company_info.manufacturer
inner join Company_info on Company_info.manufacturer = Company_info.manufacturer
inner join Transport_info on Transport_info.manufacturer = Company_info.manufacturer

Код:

class Manufacturer(models.Model):
    name = models.CharField(max_length=42)

class Bank_info(models.Model):
    account = models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)

class Company_info(models.Model):
    name= models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)

class Transport_info(models.Model):
    name= models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)

1 Ответ

0 голосов
/ 31 января 2020

Вы можете использовать prefetch_related для этого, как упомянуто в комментариях:

Manufacturer.objects.all().prefetch_related('related_name2', 'related_name3', 'related_name4')

Это, на самом деле, не будет выполнять SQL INNER JOIN, но присоединится к предварительно выбранным объектам на уровне Python - это уменьшит попадания в БД при использовании полей связанного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...