Преобразовать запрос присоединения SQL в django - PullRequest
0 голосов
/ 12 февраля 2020

Я новичок в django и пробую вещи с ним.

Как отобразить выбранные поля из объединенной таблицы. Например:

У меня есть две модели, X и Y. Я объединяю эти две модели на основе внешнего ключа модели Y.

class X(models.Model):
    name = models.CharField()
    id = models.AutoField(primary_key=True)


class Y(models.Model):
    owner_user = models.ForeignKey(X, models.DO_NOTHING, 
    db_column='id')
    detail = models.CharField()

Как мне написать этот запрос как django код?

ВЫБЕРИТЕ имя, id, Body_details ОТ X, Y ГДЕ X.id = Y.OwnerUserId;

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

Вы можете использовать select_related здесь.

result = Y.objects.select_related ('owner_use')

Вся работа по присоединению будет автоматически выполняться этим ORM с использованием select_related. Вы можете увидеть ранее заданные вопросы, подобные этому здесь .

1 голос
/ 12 февраля 2020

Вы можете использовать select_related

a = Y.objects.select_related('OwnerUserId').all()

for object in a:
    print(object.OwneruserId.name, object.OwneruserId.id, object.body)
0 голосов
/ 12 февраля 2020

Вам необходимо использовать related_name поля ForeignKey, которое по умолчанию равно y_set, для доступа к обратной связи модели:

some_id = 1
instance = X.objects.get(id=some_id)
instance.y_set.all()
...