我想能够在peewee中加入多个表。然而,对于我来说,想想如何让它和peewee一起工作,这种情况有点困难。Python peewee加入多个表
我有以下表格:
票务 TicketCategory TicketBooking 事件
这里是我的模型:
class TicketCategory(BaseModel):
venue_id = IntegerField()
name = CharField()
description = CharField()
class Ticket(BaseModel):
event = ForeignKeyField(Event)
category = ForeignKeyField(TicketCategory)
order_number = IntegerField()
tier_name = CharField()
num_available = IntegerField()
price = DecimalField()
class TicketBooking(BaseModel):
user_id = IntegerField()
ticket = ForeignKeyField(Ticket, related_name="ticketbookings")
price_paid = DecimalField()
created = DateTimeField()
deleted = DateTimeField()
class Event(BaseModel):
venue_id = IntegerField()
date = DateField()
event_image_url = CharField()
start = TimeField()
end = TimeField()
现在我想运行一个查询,将选择所有ticketbookings对于给定的用户。运行我的加入后,我想要加载所有信息 - 我不希望在访问ticketbooking.ticket.category.name或ticketbooking.ticket.event.description时启动另一个查询。
我不能只是这样做:
return TicketBooking.select(TicketBooking, Ticket, TicketCategory, Event).join(Ticket).join(TicketCategory).join(Event).where(
TicketBooking.user_id == user_id,
TicketBooking.deleted >> None
)
因为事件不是TicketCategory上的外键,所以出现错误。任何帮助将非常感激。
谢谢,我错过了文档中的开关。 –
对于任何想知道它如何与Flask-RESTful一起工作的人,请使用类似上面的查询语句,一旦获取数据,将记录编组()到列表中。要列入的字段的名称应与列名称的名称相同,而不用表名称作为前缀,如果您在多个表中具有相同名称的列,则要小心,以防您选择所有列。 – OzzyTheGiant