gpt4 book ai didi

Python peewee 连接多个表

转载 作者:太空狗 更新时间:2023-10-29 17:56:14 31 4
gpt4 key购买 nike

我希望能够在 peewee 中连接多个表。然而,这个场景对我来说有点难以弄清楚如何让它与 peewee 一起工作。

我有以下表格:

门票门票类别订票事件

这是我的模型:

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()

现在我想运行一个查询,该查询将选择给定用户的所有票务预订。运行加入后,我希望加载所有信息——我不希望在访问 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
)

因为 Event 不是 TicketCategory 的外键,所以我得到一个错误。任何帮助将不胜感激。

最佳答案

再尝试回答这个问题。

(TicketBooking
.select(
TicketBooking,
Ticket,
TicketCategory,
Event)
.join(Ticket)
.join(TicketCategory)
.join(Event)
.where(
TicketBooking.user_id == user_id,
TicketBooking.deleted >> None
))

你快到了。试试看:

(TicketBooking
.select(
TicketBooking,
Ticket,
TicketCategory,
Event)
.join(Ticket)
.join(TicketCategory)
.switch(Ticket) # <-- switch the "query context" back to ticket.
.join(Event)
.where(
TicketBooking.user_id == user_id,
TicketBooking.deleted >> None
))

关于Python peewee 连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016778/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com