peewee python несколько внешних ключей на столе

У меня есть следующий класс модели:

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

Как видите, таблица имеет несколько внешних ключей. Я хочу иметь возможность затем выбирать все билеты и перебирать их и получать доступ как к категории, так и к событию:

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

Однако я не хочу, чтобы новые запросы запускались во время каждой итерации для категории и события. Я знаю, что если бы я просто обращался к событию, я мог бы сделать что-то вроде:

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

Однако каждый раз, когда я обращаюсь к категории, будет запускаться новый запрос. Этот код дает мне исключение:

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

Ошибка, которую я получаю: ValueError: Нет внешнего ключа между классом «models.ticketing.Category» и классом «models.event.Event»


person Atul Bhatia    schedule 25.02.2014    source источник


Ответы (1)


Что касается последней ошибки: вы пытаетесь присоединить Category к Event, вам нужно вернуться к Ticket:

tickets = Ticket.select(Ticket, Category, Event).join(Event).switch(Ticket).join(Category)
person Chris Matta    schedule 25.02.2014