如何选择和限制Peewee ORM中的related_name连接?

时间:2013-11-21 11:29:45

标签: python orm flask flask-sqlalchemy peewee

我正在使用Flask和Peewee ORM,我在其中定义了两个表:

class Ticket(db.Model):
    created = DateTimeField(default=datetime.now)
    customer_uuid = CharField() # the customer's UUID gotten from App. More info comes from bunq API.
    ticket_type = ForeignKeyField(TicketType, related_name='tickets')
    active = BooleanField(default=True)

class Assign(db.Model):
    created = DateTimeField(default=datetime.now)
    ticket = ForeignKeyField(Ticket, related_name='assigned_to')
    user = ForeignKeyField(User, related_name='assigned_tickets')

在“分配”表中,可以将多个用户分配给故障单,但只有最后一个用户计数(即,如果分配了新用户,则应忽略之前的用户)。所以我使用以下方法选择活动门票:

open_tickets = Ticket.select().where(Ticket.active == True)

我现在想在我的模板中使用这个循环。但是,每次迭代时,我还想显示分配的用户。但是open_ticket[0].assigned_to显然会返回几个分配,并且有几个用户。

有人知道如何为循环中的每张票获得最新分配的用户吗?

1 个答案:

答案 0 :(得分:0)

这在Sqlite中对我有用:

q = (Ticket
     .select(Ticket, Assign, User)
     .join(Assign)
     .join(User)
     .group_by(Ticket)
     .order_by(Ticket.id, Assign.id.desc()))

for ticket in q:
    print ticket.id, ticket.assign.user.username