Как объединить и получить данные из нескольких таблиц для одного идентификатора - PullRequest
0 голосов
/ 20 февраля 2020

таблица A:

................
id   name  age |
................
1    G     29  |
2    A     30  |
................

таблица B: (таблица b имеет внешний ключ таблицы A в поле tableA_id, кратном)

id   phone     rank   tableA_id
1    98989     A      1
2    98989     C      1
3    98989     D      2

таблица C: ( таблица C имеет внешний ключ таблицы A в поле tableA_id, которое кратно)

id   notes     email            tableA_id
1    98989     A@gmail.com      1
2    98989     C@gmail.com      1

В моем случае я хочу получить все данные из всех таблиц и отображать их на одной странице , то, что я хочу, я хочу один запрос, чтобы получить все данные из всех трех таблиц с одним набором запросов. И идентификатор, который я отправляю, это Table_id = 1, так как я могу получить данные для таблицы 1 из всех таблиц, может кто-нибудь есть идея, пожалуйста, дайте мне сейчас я здесь новый

1 Ответ

2 голосов
/ 20 февраля 2020

Ну, вероятно, вы не можете сделать это в одном запросе. Но, используя prefetch_related, вы можете загрузить все связанные таблицы, чтобы уменьшить попадания в БД. Например:

# if the models are defined like this:

class TableA(models.Model):
    name = models.CharField(...)
    age = models.IntegerField(...)

class TableB(models.Model):
    table_a = models.ForeignKey(TableA)


class TableC(models.Model):
    table_a = models.ForeignKey(TableA)

# then the query will be like this

table_data = TableA.objects.filter(pk=1).prefetch_related('tableb', 'tablec')
for data in table_data:
    print(data.name)
    print(data.tableb.all().values())
    print(data.tablec.all().values())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...