【发布时间】:2013-11-21 11:29:45
【问题描述】:
我将 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 显然返回了几个分配,并带有几个用户。
有人知道我如何为循环中的每张工单获取最新分配的用户吗?
【问题讨论】:
-
如果票证一次只能分配给一个用户,为什么不在票证表中将
user_id作为 FK? -
@Doobeh - 因为我希望能够看到它之前分配给了哪个。通过这种方式,我可以看到工单发生了什么以及为什么,例如,有人被分配到它,但将其更改为不同的用户。
-
对我来说最好的方法是在分配中添加某种活动标志,在分配创建(插入/更新)时发出信号以停用以前的分配,然后查询将非常简单(赋值.active == True)
标签: python orm flask flask-sqlalchemy peewee