【发布时间】:2011-06-12 19:45:36
【问题描述】:
我有一个排序/分组问题,希望有人能补充一些见解。
我们有一个包含发布日期和更新日期的故事表。我正在使用 Django,所以它看起来像这样:
class Story(models.Model):
pub_date = models.DateTimeField(db_index=True)
update_date = models.DateTimeField(blank=True, null=True, db_index=True)
headline = models.CharField(max_length=200)
...
我们希望在按天分组的分页页面上显示故事。所以...
Jan 20
Story 1
Story 2
Jan 19
Story 1
Story 3
挑战在于,如果故事有 update_date,它应该显示两次,一次在 pub_date 日期,一次在 update_day 日期(例如故事 1)。
有成千上万的故事,所以我当然不能在 python 中全部完成,但我不知道在 SQL 中执行此查询的方法。
我现在拥有的是按 -pub_date 对所有内容进行排序,然后获取给定页面上的最大和最小日期范围。然后,我使用 update_date 查询这些日期之间的任何故事,并在 python 中将它们组合和分组。问题是页面上的项目数量是不规则的。
所以我想我的问题是:查询表以获取项目列表并根据两个字段对它们进行排序的最佳方法是什么,如果它在第二个字段中有值,则在查询中复制一个项目,以及然后根据这两个字段排序?
希望这是有道理的......
【问题讨论】:
标签: python sql django sorting group-by