Peewee, Python, получить данные в столбце внешнего ключа - PullRequest
0 голосов
/ 09 мая 2018

Привет, у меня есть база данных и 2 таблицы,

color: color_id | color_name | color_type
fruit: fruit_id | color | fruit_name

Мой «цвет» в таблице фруктов - это иностранная клавиша, перетаскиваемая до «color_id» в таблице цветов.

Итак, с Peewee & Python я хочу получить «цвет» в таблице фруктов, но я всегда получаю «Нет».

fruits= Fruit.select() 
for fruit in fruits:    
     c = fruit.color   
     print(c)

Я пытался с

fruits = Fruit.get()

Но здесь я не могу повторить это. Я покажу вам свою модель:

class Fruit(BaseModel):
    fruit_id= CharField()
    name = Charfield()
    color= ForeignKeyField(column_name='color', field='color', model=Color, null=True)

    class Meta:
        table_name = 'fruit'

Есть ли у вас какие-либо идеи, как я могу получить значение в моем столбце «цвет» в моей таблице «фрукты»? Thanx

1 Ответ

0 голосов
/ 09 мая 2018

Удалите параметр «field =», так как в этом нет необходимости, и его следует указывать только в том случае, если необходимо сослаться на конкретное поле (не первичный ключ) в связанной модели:

class Fruit(BaseModel):
    fruit_id = CharField()
    name = Charfield()
    color = ForeignKeyField(Color, column_name='color', null=True)

    class Meta:
        table_name = 'fruit

Просто для справки, итерация по фруктам и доступа к цвету является примером O (n) запросов. Вам лучше сделать это, чтобы объединить таблицу цветов и выбрать столбцы цветов в дополнение к столбцам фруктов:

query = Fruit.select(Fruit, Color).join(Color)
for fruit in query:
    print(fruit.name, fruit.color.color_name)
...