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()
Другие вопросы по тегам