Python peewee外键

Atu*_*tia 2 python foreign-keys peewee

如果我有下表:

class Ticket(BaseModel):
    event = ForeignKeyField(Event)
    category = ForeignKeyField(TicketCategory)
    order_number = IntegerField()
    tier_name = CharField()
    num_available = IntegerField()
   price = DecimalField()
Run Code Online (Sandbox Code Playgroud)

然后我执行以下代码:

tickets = Ticket.select()
for ticket in tickets:

     print ticket.event.id
Run Code Online (Sandbox Code Playgroud)

访问外来对象的主键是否强制peewee启动另一个查询?或者peewee足够聪明,知道id已经可用了吗?

tdd*_*son 6

几年后,但是对于其他偶然发现此页面的人来说,如今,您可以使用Django使用的相同语法:<< field_name >> _ id来访问id。在这种情况下,ticket.event_id。

根据文档

有时,您仅需要外键列中关联的主键值。在这种情况下,Peewee遵循Django建立的约定,允许您通过在外键字段的名称后附加“ _id”来访问原始外键值:

但是,值得注意的是,这仅在访问查询对象的值时有效。换句话说,如果您想更改事件ID,只需设置

ticket.event = new_event_id

而不是尝试设置ticket.event_id。

尝试基于外键进行选择时也是如此:

Ticket.select()。where(事件==期望事件ID)