1
不工作我使用一个SQLite后端用一个简单的展示 - 季 - 集模式:ORDER_BY()方法peewee
class Show(BaseModel):
name = CharField()
class Season(BaseModel):
show = ForeignKeyField(Show, related_name='seasons')
season_number = IntegerField()
class Episode(BaseModel):
season = ForeignKeyField(Season, related_name='episodes')
episode_number = IntegerField()
,我会需要以下查询:
seasons = (Season.select(Season, Episode)
.join(Episode)
.where(Season.show == SHOW_ID)
.order_by(Season.season_number.desc(), Episode.episode_number.desc())
.aggregate_rows())
SHOW_ID作为我想要季节列表的节目的编号。 但是当我遍历查询用下面的代码:
for season in seasons:
for episode in season.episodes:
print(episode.episode_number)
...我得到的一些东西,完全不下令,以及甚至不按照顺序我会得到不使用ORDER_BY()即插入顺序。
我激活了调试日志以查看传出查询,并且查询包含ORDER BY子句,并手动应用它返回正确的降序。
我是peewee的新手,我看到很多使用join()的例子与一个order_by()结合使用,但我仍然无法找出我做错了什么。
我只是等待发布,非常感谢修复! – rkohser 2015-02-01 10:26:18
我刚刚测试没有aggregate_rows(),它仍然没有排序。 – rkohser 2015-02-01 14:06:11
是的,没有'aggregate_rows()'会有所不同 - 我假设你正在遍历'season.episodes'?如果是这样,你就会招致“N + 1”查询问题。 – coleifer 2015-02-01 16:27:07