如何修改Django Admin中User模型的“Add User”按钮文本为“Invite User”?
当以超级用户身份登录Django Admin界面时,左侧边栏会显示模型列表。点击任意模型名称进入该模型的列表页,右上角有“Add [Model-Name]”按钮。我需要修改此按钮的文本:我的项目中有User模型,希望将其列表页的“Add User”按钮文本改为“Invite User”。
我尝试过相关方案及Django官方文档的模板重写方法,但未成功。我修改了change_form.html模板,将{% blocktranslate with name=opts.verbose_name %}Add {{ name }}{% endblocktranslate %}替换为{% blocktranslate with name=opts.verbose_name %}Invite {{ name }}{% endblocktranslate %},并将修改后的文件放在pricingmeister/accounts/templates/admin/目录下,但未看到变化。
我的Django项目settings.py关键配置如下:
INSTALLED_APPS = [ # Local Apps "pricingmeister.accounts", "pricingmeister.core", # Django Apps "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", ] TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], "APP_DIRS": True, "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", ], }, }, ]
请问我哪里操作错误?
你的操作存在两个核心错误,修正后即可生效:
1. 选错了目标模板文件
列表页右上角的“Add”按钮属于模型列表页模板,对应文件是change_list.html;你修改的change_form.html是模型添加/编辑页面的模板,两者功能完全不同,修改它不会影响列表页的按钮文本。
2. 模板路径不符合Django重写规则
Django模板重写需要严格匹配原模板的路径结构:
- 若使用Django默认的
auth.User模型,需在accounts应用下创建路径:pricingmeister/accounts/templates/admin/auth/user/,再将修改后的change_list.html放入该目录。 - 若使用
accounts应用下的自定义User模型,需创建路径:pricingmeister/accounts/templates/admin/accounts/user/,再放入change_list.html。
正确修改步骤
- 创建对应路径的
change_list.html文件,写入以下内容(仅重写按钮部分,保留默认模板其他逻辑):
{% extends "admin/change_list.html" %} {% block object-tools-items %} <li> {% url opts|admin_urlname:'add' as add_url %} <a href="{% add_preserved_filters add_url is_popup to_field %}" class="addlink"> {% blocktranslate with name=opts.verbose_name %}Invite {{ name }}{% endblocktranslate %} </a> </li> {{ block.super }} {% endblock %}
- 清除Django模板缓存(若开启缓存),重启开发服务器。
- 刷新Admin页面,即可看到“Invite User”按钮。
额外提醒:如果是自定义User模型,需确保在admin.py中正确注册模型(如继承UserAdmin或自定义Admin类),否则模板路径可能无法匹配。
内容的提问来源于stack exchange,提问作者Khubaib Khawar

