Включить столбцы объединенной таблицы в запросы - PullRequest
0 голосов
/ 02 ноября 2018

Я использую peewee для запроса к базе данных, и я возвращаю запрос, используя .dicts(), но для ForeignKeyFields я не знаю, как включить внешний ключ в результирующий dict.

Код говорит громче, чем слова:

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 голосов
/ 04 ноября 2018

Вы можете использовать сокращение для выбора всех столбцов модели:

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

При использовании dicts все поля из Bar и Foo присутствуют в строке dict. Если в Foo есть поля, которые имеют то же имя, что и поле в Bar, то поле из Foo не будет включено, поскольку оно перезапишет поле из Bar.

...