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 の外部キーではないため、エラーが発生します。どんな助けでも大歓迎です。