UnorderedObjectListWarning
検索結果のページ分割されたビューでモデル インスタンスを表示しようとすると、Django に遭遇し続けます。ただし、models.py ファイルにはデフォルトの順序が定義されています。
class Rfc(models.Model):
class Meta:
verbose_name='RFC'
verbose_name_plural='RFCs'
ordering=['number']
実際の検索はviews.pyで行われ、次のように定義されます:
# parse GET parameters
search_term = request.GET.get('q', '')
category = request.GET.get('c', 'cs')
page = request.GET.get('p', 1)
...
results_rfc = Rfc.objects.filter(
Q(title__icontains=search_term) | Q(number__icontains=search_term)
)
if category=='cs':
active_tab = 'cs'
results = results_cs
else:
active_tab = 'rfc'
results = results_rfc
paginator = Paginator(results, 15)
ただし、order_by('number')
上記のフィルター関数でDjango に明示的に指示しても、機能させるようには見えません。結果は常に次のとおりです。
UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list: <class 'directory.models.Rfc'> QuerySet.
paginator = Paginator(results, 15)
さらに困惑しているのは、上記のコードを で実行したときにこの警告が表示されないことmanage.py shell
です。明らかに、ここで何かが欠けています。何か案は?
うーん、これは恥ずかしい: 確かに、object_list はずっとソートされていましたが、ファイルの最後にビュー関数の欠陥のある古いバージョンのコピーがありました。結果。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加