2017-11-07 19 views
0

管理ページに対して実行されるcount(*)のクエリを削除しようとしていますが、そのクエリはリンク先ページでは発生しません。 djangoにはフィルタリングされたビューはカスタマイズできますが、ランディングビューはカスタマイズできない方法はありますか?私はドキュメントを読んで、コードを調べましたが、何も見つかりませんでしたので、ここで質問します。フィルタリングされたビューのみのデフォルトの変更リストビューを変更します

カウントクエリが発生している場所に関する情報がありますが、フィルタリングされたビューと通常のビューに基づいて変更リストビューを変更する方法が見つかりませんでした。

答えて

0

最終的に答えが見つかりました。

djangoには管理ページ用のshow_full_result_countという属性があり、フィルタリングされたページのカウントクエリを無効にしてフルカウントを表示します。 Refer to this picture。それをFalseに置くと、その番号はそこに表示されません。See this

ここにコードがあります。

class SomemodelAdmin(models.Admin): 
    show_full_result_count = False 
    list_display =() 
admin.models.register(Somemodel, SomemodelAdmin) 

これは、カウントクエリを半分に減らすのを防ぎます。この周りのロジックはdjango/contrib/admin/views/main.pydjango/contrib/admin/templates/admin/search_form.html

にあります。テンプレートをオーバーライドした場合は、show_full_result_count属性にテンプレートの制約がないことを確認してください。実際にfull_result_countの条件を持つ基本テンプレートをオーバーライドして、adminアクションを隠すバグが発生します。これは、show_admin_actionsという属性を定義しているため、これを使用する必要があります。

関連する問題