【问题标题】:change default change_list view for only filtered views仅更改过滤视图的默认 change_list 视图
【发布时间】:2017-11-07 09:20:20
【问题描述】:

我们正在删除为管理页面触发的 count(*) 查询,我们不希望在着陆页上触发该查询,但应该在过滤页面上触发该查询。在 django 中有什么方法可以自定义过滤视图但不能登陆视图。我阅读了文档,浏览了代码,但没有找到任何东西,所以在这里问。

我找到了一些关于触发计数查询的位置的信息,但我找不到根据过滤视图和普通视图修改更改列表视图的方法。

【问题讨论】:

    标签: python django django-views


    【解决方案1】:

    所以,我们终于找到了答案。

    在 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 的属性,我们必须使用它。

    【讨论】:

      猜你喜欢
      • 2012-02-07
      • 2017-01-28
      • 1970-01-01
      • 2020-07-31
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      相关资源
      最近更新 更多