【问题标题】:How to sort an InstrumentedList based on timestamp?如何根据时间戳对 InstrumentedList 进行排序?
【发布时间】:2012-07-15 19:42:15
【问题描述】:

目前我有一个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

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

【问题讨论】:

  • 我没有看到任何时间戳,但你可以做 sorted_list=sorted(orig_list,key=lambda x:x['timestamp']) 或类似的事情

标签: python sqlalchemy pyramid


【解决方案1】:

您需要在关系定义中指定排序,使用order_by parameter

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

【讨论】:

    【解决方案2】:

    @martjin 的回答完全没问题,但是如果你想按 descending order 排序你的桌子,那么使用 desc() 函数:

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

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 2013-03-06
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 2014-05-01
      • 2021-03-16
      相关资源
      最近更新 更多