Django, как включить все столбцы из одной таблицы, но только подмножество столбцов в другой таблице, используя tbl.only?
Я хочу присоединить дочернюю таблицу к родительской таблице и вернуть все столбцы из дочерней таблицы (child.*), но только определенные столбцы из родительской таблицы (parent.foo, parent.bar), используя, но не .
Есть ли какой-либо синтаксис для выдачи SQL, подобного следующему:
select child.*,
parent.foo, parent.bar
from child join parent on child.parent_id = parent.id
я не хочу использовать
defer
, поскольку
parent
таблица имеет даже больше столбцов, чем
child
стол.
В настоящее время мне нужно указать каждый столбец, который я хочу использовать
only
:
Child.objects.select_related('parent').only(
'id', 'name', 'creation_date',
'parent__foo', 'parent__bar'
).all()
Но я хотел бы включить все столбцы из Child.
1 ответ
Вы можете сделать это
Child.object.select_related('parent').only(*[f.get_attname() for f in Child._meta.fields], 'parent__foo', 'parent__bar').all()