在查询字典中包括联接的表列

时间:2018-11-02 14:05:55

标签: python peewee

我正在使用peewee查询数据库,并且正在使用.dicts()返回查询,但是对于ForeignKeyFields我不知道如何在结果字典中包含外键。

代码胜于雄辩:

from peewee import Model

class Foo:
    name = SomeField(unique=True)

class Bar:
    param_one = SomeField()
    param_two = SomeField()
    param_xyz = SomeField()
    a_foo = ForeignKeyField(Foo)

query = Bar.select().join(Foo).dicts()
for i in query:
   print(i['a_foo'].name)
   >> AttributeError

query = Bar.select(Bar.param_one, Foo.name).join(Foo).dicts()
for i in query:
   print(i)
   >>> {'param_one': x, 'name': y}

我想知道是否有一种方法可以执行类似于第二个查询的操作,而不必在Bar中键入所有列名。

即,输出包含Bar中所有列和Foo中连接列的字典。

1 个答案:

答案 0 :(得分:2)

您可以使用快捷方式从模型中选择所有列:

query = Bar.select(Bar, Foo).join(Foo).dicts()

使用字典时,Bar和Foo中的所有字段都出现在行字典中。如果Foo的字段与Bar中的字段具有相同的名称,则Foo中的字段将不包括在内,因为它将覆盖Bar中的字段。

相关问题