如何在Django admin的changelist_view中隐藏总数统计?
不修改模板隐藏Django Admin changelist总数的方法
不需要修改模板的话,有几种可行的方案:
方案1:注入自定义CSS隐藏元素
这是最简单的方式,通过Admin类的Media属性添加自定义CSS,直接隐藏显示总数的DOM元素。
- 在你的Django项目静态文件目录下创建CSS文件(比如
static/css/hide_admin_total.css),添加以下样式:
/* 隐藏Django Admin changelist底部的总数文本 */ .change-list .paginator .quiet { display: none; }
(注:如果你的Django版本样式类名不同,可以通过浏览器开发者工具查看对应元素的类名调整选择器)
- 在对应的ModelAdmin类中引入这个CSS:
from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): # 其他配置... class Media: css = { 'all': ('css/hide_admin_total.css',) } admin.site.register(YourModel, YourModelAdmin)
方案2:重写changelist_view修改上下文
通过重写ModelAdmin的changelist_view方法,修改传递给模板的上下文数据,让总数相关的变量为空或不渲染。
示例代码:
from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): # 其他配置... def changelist_view(self, request, extra_context=None): response = super().changelist_view(request, extra_context) # 获取ChangeList实例 cl = response.context_data['cl'] # 清空总数相关数据,让模板不渲染总数文本 cl.full_result_count = None cl.result_count = None return response admin.site.register(YourModel, YourModelAdmin)
(注:不同Django版本中,ChangeList的属性名可能有差异,比如部分版本用total_result_count,可以根据实际情况调整)
方案3:自定义ChangeList类
如果需要更彻底的控制,可以自定义ChangeList类,重写计算总数的方法:
from django.contrib import admin from django.contrib.admin.views.main import ChangeList from .models import YourModel class NoTotalChangeList(ChangeList): def get_full_result_count(self): # 返回空值,让模板不显示总数 return None class YourModelAdmin(admin.ModelAdmin): # 其他配置... def get_changelist(self, request, **kwargs): return NoTotalChangeList admin.site.register(YourModel, YourModelAdmin)
以上三种方法都不需要修改Django的原生模板,推荐优先使用方案1(CSS隐藏),实现简单且对原有逻辑无侵入。
内容的提问来源于stack exchange,提问作者Alvaro Guarda
相关产品推荐
相关产品推荐

