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