Djangoで「TypeError: Cannot reverse a query once a slice has been taken」
今回はDjangoで「TypeError: Cannot reverse a query once a slice has been taken」が起きる原因とその対策についてご紹介いたします。
Djangoで「TypeError: Cannot reverse a query once a slice has been taken」
原因としては、エラーメッセージまんまとなります。
Djangoのmodelを取得したときにsliceの機能がありますが、そのsliceをしたあとだと、reverse()ができないようです。
例として、testModelというDjangoのmodelがあるとします
1 |
testData = testModel.objects.all.order_by('id')[:3] |
などをしたときに、testDataをreverse()できないようですね。
1 2 3 |
# NG例 testData = testModel.objects.all.order_by('id')[:3] reversedData = testData.reverse() |
回避策としては、reverse()を使わずにslice(DBにおけるlimit)ではなくOffsetを使用することを検討しましょう。
終わりに
今回はDjangoで「TypeError: Cannot reverse a query once a slice has been taken」が起きる原因とその対策についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません