我目前正在我的应用中删除change_form.html
,将其放入:
myproject/myapp/templates/admin/change_form.html
这很好但我真的只想覆盖User
模型的更改表单,而不是其他任何内容。如果我放入它似乎不起作用:
myproject/myapp/templates/admin/user/change_form.html
我猜这是因为User
模型不是来自我的应用程序?
在某些其他应用程序(即change_list.html
应用程序)中覆盖django.contrib.auth
特定模型的最简洁方法是什么?
来自settings.py
的相关摘要:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'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',
'unicorn.context_processors.site_url',
'unicorn.context_processors.consultant_data',
'unicorn.context_processors.branding',
],
'builtins': ['tracking.templatetags.tracking_extras'],
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
],
},
},
]
答案 0 :(得分:0)
settings.py
TEMPLATES = [
{
'BACKEND': ...,
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
...
}
]
将admin/auth/user/change_form.html
放在项目的templates
目录中。
答案 1 :(得分:0)
看起来您需要将应用程序名称添加到模板的完整路径,因此应该是
myproject/myapp/templates/admin/myapp/user/change_form.html
答案 2 :(得分:0)
晚4年了,但是有人在寻找答案-
如果像我一样安装了Grappelli软件包,则可以通过转到python/lib/site-packages/grappelli
并在此处寻找change_form.html
来解决问题。该软件包将覆盖我的自定义模板,因此我对grappelli文件进行了更改。
答案 3 :(得分:0)
适用于 Django 3.2+ 首先你需要在你的项目中创建一个类似的管理模板结构目录:
- project_dir
- app
- templates/admin/ <---
- venv
然后复制 change_form.html
来自venv/lib/python[ver]/site-packages/dajngo/contrib/admin/templates/
进入:/templates/admin/change_form.html
这是您项目中的模板文件夹
这假设您是否使用 virtualenv
然后将 settings.py
设置为:
import os
...
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates/')],
'APP_DIRS': True,
...
然后你可以修改你已经复制的/templates/admin/change_form.html
,
例如,您只想为用户模型显示一些文本,您可以执行以下操作:
寻找行:{% block field_sets %}
及以下放置:
{% if opts.model_name == "user" %} Put Your Text Here {% endif %}
看起来像这样:
{% block field_sets %}
{% if opts.model_name == "user" %} Put Your Text Here {% endif %}
您可以用您想要的任何模型替换 user
。