Django, реляционные наборы запросов - PullRequest
1 голос
/ 05 марта 2010

Как мне выразить этот SQL-запрос в Django Queryset?

SELECT * FROM Table1, Table2 WHERE Table1.id_table2 = Table2.id_table2;

Имейте в виду, что структура table1 подразумевает id_table2 внешний ключ ...

Почему? Потому что я хочу заменить id_table2 в списке Table1 table1.object.all() значениями, связанными с регистром, связанным с отношением. Как это

Без отношений

| id_table1 | id_table2 | foo_field1 | bar_field1 |
---------------------------------------------------
| 1         | 1         | foo1       | foo2       |
---------------------------------------------------

С Отношениями

| id_table1 | foo_field2*| foo_field1 | bar_field1 |
----------------------------------------------------
| 1         | foo2       | foo1       | foo2       |
----------------------------------------------------

Имейте в виду, что foo_field2 означает не только это связанное поле, но и все связанные поля этого регистра.

1 Ответ

0 голосов
/ 05 марта 2010

Вы не можете выполнить этот запрос с помощью Django ORM. Лучшее, что вы можете сделать, это использовать select_related(), чтобы одновременно извлекать поля для другой таблицы:

Table1.objects.select_related('table2')
...