Orm order_by()方法在peewee中不起作用
我使用的是一个SQLite后端,带有一个简单的show-season-Spice模式: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
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()结果删除为重复结果,但仍然没有排序,这意味着排序问题不是来自聚合,如果我错了,请纠正我。