我将SQL Alchemy的Declarative flavor与PostgreSQL数据库一起使用。我有ClaimAccount
来管理Claim
个对象。类似的东西:
class Claim(MyBase):
manager_id = Column(UUID, ForeignKey(ClaimAccount.id))
manager = relationship(ClaimAccount, backref='claims')
created = Column(DATE)
现在,如果a
是ClaimAccount
,则a.claims
是Claim
的列表。这很好,但我希望它按created
列排序,因为我总是想按照从最旧到最新的顺序迭代.claims
。当然我可以在Python中对它进行排序,但如果Postgres为我做的那样可能会更好(更清晰,更快,更干,更方便)。
起初我认为答案是将collection_class
设置为与某些PriorityQueue或SortedList之间的关系,或者其他什么,但现在我认为它只会影响声明如何填充到Python数据结构中,而不是如何从数据库中获取。此外,文档说“在大多数情况下,您不需要自定义集合实现”(但是,那里提到的案例不包括我的,似乎)。
您对如何做到这一点有什么建议吗?
答案 0 :(得分:1)
您可以为关系指定order_by
参数。因为订单适用于backref,所以你可以这样做:
manager = relationship(ClaimAccount, backref=backref('claims', order_by=Claims.created.desc()))