如何根据时间戳对InstrumentedList进行排序?

时间:2012-07-16 21:53:20

标签: python sqlalchemy pyramid

目前我的InstrumentedList代表了我的金字塔应用中的一对多关系。这种关系以下列方式构建:

Class project:
 submissions = relationship('Submission', backref='project')

我想迭代项目列表中的每个提交。但是,我希望我的提交按时间戳(datetime对象)

排序

以下是我现在如何迭代我的提交内容:

for project in projects:
    for submission in project.submissions:
        # Do some stuff with each submission here

问题是每当重新加载应用程序时,每个项目的提交顺序都会发生变化。我需要订单一致并按时间戳排序,我该怎么做呢?

2 个答案:

答案 0 :(得分:7)

您需要使用order_by parameter

在关系定义中指定排序
class Project(Base):
    # ...
    submissions = relationship('Submission',
        backref='Project', order_by='Submission.timestamp')

答案 1 :(得分:1)

@martjin 的回答完全没问题,但如果您想按降序对桌子进行排序,请使用 desc() 函数:

class Project(Base):
    # ...
    submissions = relationship('Submission',
        backref='Project', order_by='Submission.timestamp.desc()')