我们正在删除针对管理页面触发的count(*)
个查询,我们不希望在目标网页上触发该查询,但应在过滤页面上触发。在django中有什么方法我们可以自定义过滤后的视图但不能自定义着陆视图。我阅读了文档,浏览了代码,但没有找到任何内容,所以在这里问。
我找到了一些关于计数查询被触发的地方的信息,但我找不到基于过滤和普通视图修改变更列表视图的方法。
答案 0 :(得分: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.py
和此django/contrib/admin/templates/admin/search_form.html
这里强烈注意的是,如果您覆盖了任何模板,请确保该模板对show_full_result_count
属性没有约束。我们实际上覆盖了基本模板,其条件为full_result_count
,这使我们失去了隐藏管理操作的错误,为此我们有一个名为show_admin_actions
的属性,我们必须使用它。