Django如何包含一个表中的所有列,但只包含另一个表中的列的子集,使用tbl.only?

z9ju0rcb  于 2023-03-24  发布在  Go
关注(0)|答案(1)|浏览(98)

我想将一个子表连接到父表,并返回子表(child.*)中的所有列,但只返回父表(parent.foo,www.example.com)中的特定列parent.bar,使用only而不是defer
是否有任何语法可以发出类似于以下的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()

但我想包括所有的列从儿童。

px9o7tmv

px9o7tmv1#

你能做到的

Child.object.select_related('parent').only(*[f.get_attname() for f in Child._meta.fields], 'parent__foo', 'parent__bar').all()

相关问题