Orm order_by()方法在peewee中不起作用

Orm order_by()方法在peewee中不起作用,orm,peewee,Orm,Peewee,我使用的是一个SQLite后端,带有一个简单的show-season-Spice模式: class Show(BaseModel): name = CharField() class Season(BaseModel): show = ForeignKeyField(Show, related_name='seasons') season_number = IntegerField() class Episode(BaseModel): season = Fo

我使用的是一个SQLite后端,带有一个简单的show-season-Spice模式:

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\u ID是我想要季节列表的节目的ID。 但当我使用以下代码迭代查询时:

for season in seasons:
    for episode in season.episodes:
        print(episode.episode_number)
。。。我得到的东西根本不是有序的,甚至不遵循我在不使用order_by()的情况下得到的顺序,即插入顺序

我激活了调试日志以查看传出查询,该查询确实包含ORDERBY子句,手动应用它将返回正确的降序


我是peewee的新手,我见过很多使用join()组合和order_by()的示例,但我仍然无法找出我做错了什么。

这是由于聚合查询结果包装器中嵌套集合的处理中存在错误造成的

github的问题是:

修复程序已在此处合并:


因此,要获得修复,您需要克隆master或等待下一个版本,该版本应在下周或两周(2.4.7)发布。

我刚刚测试了没有聚合行()的版本,但它仍然没有订购。是的,没有聚合行(),情况会有所不同。——我假设您正在迭代
季。剧集
?如果是这样的话,您将遇到“N+1”查询问题。是的,将聚合_rows()结果删除为重复结果,但仍然没有排序,这意味着排序问题不是来自聚合,如果我错了,请纠正我。