简体   繁体   English

peewee python表上的多个外键

[英]peewee python multiple foreign keys on table

I have the following model class: 我有以下模型类:

class Ticket(BaseModel):
    event = ForeignKeyField(Event)
    category = ForeignKeyField(Category)
    order_number = IntegerField()
    tier_name = CharField()
    num_available = IntegerField()
    price = DecimalField()

As you can see, the table has multiple foreign keys. 如您所见,该表具有多个外键。 I want to be able to then select all tickets and iterate over them and access both the category and event: 然后,我希望能够选择所有票证并对其进行遍历并访问类别和事件:

tickets = Ticket.select()
for ticket in tickets:
    print ticket.category.id
    print ticket.event.id

However, I don't want new queries to be launched during each iteration for the category and the event. 但是,我不希望在每次迭代中针对类别和事件启动新查询。 I know that if I were just accessing the event I could do something like: 我知道,如果我只是参加活动,我可以做类似的事情:

tickets = Ticket.select(Ticket, Event).join(Event)

However, a new query will still be launched every time I access the category. 但是,每次我访问类别时,仍然会启动一个新查询。 This code gives me an exception: 这段代码给了我一个例外:

tickets = Ticket.select(Ticket, Category, Event).join(Event).join(Category)

The error I get is: ValueError: No foreign key between class 'models.ticketing.Category' and class 'models.event.Event' 我得到的错误是:ValueError:类'models.ticketing.Category'和类'models.event.Event'之间没有外键

对于最后一个错误:您正在尝试将Category加入Event ,则需要切换回Ticket

tickets = Ticket.select(Ticket, Category, Event).join(Event).switch(Ticket).join(Category)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM