Django管理模板覆盖不起作用

ian*_*las 2 django django-models django-admin

Django 1.6.11

应用程序结构如下:

my_project/
     |-- new_app/
     |-- templates/
Run Code Online (Sandbox Code Playgroud)

在我的配置中:

TEMPLATE_ROOT = os.path.join(BASE_ROOT, 'templates/')
TEMPLATE_DIRS = (
    TEMPLATE_ROOT,
)
INSTALLED_APPS = (
    'django.contrib.admin',
    ...
    'new_app',
)
Run Code Online (Sandbox Code Playgroud)

我也尝试上市new_app之前contrib.admin,并没有帮助.

当我复制venv/django/contrib/admin/templates/admin/change_list.html到我的时候,/templates/admin/new_app/change_list.html我看不到我的自定义设置.

my_project/
     |-- new_app/
     |-- templates/
         |-- admin/
             |-- new_app/
                 |-- change_list.html
Run Code Online (Sandbox Code Playgroud)

当我将change_list.html向上移动一级以使其位于管理路径下时,更改显示正常:

my_project/
     |-- new_app/
     |-- templates/
         |-- admin/
             |-- change_list.html
             |-- new_app/   (now an empty folder)
Run Code Online (Sandbox Code Playgroud)

...但当然这意味着我的更改将影响每个管理页面,而不仅仅是我正在尝试修改的应用程序.

我已将此添加到应用程序中admin.py中的唯一模型:

class MyModelAdmin(reversion.VersionAdmin):
    change_list_template = 'admin/new_app/change_list.html'
Run Code Online (Sandbox Code Playgroud)

...这给了我一些我需要的东西,但我还需要change_list_results.html,并且没有ModelAdmin覆盖.

我正在按照第31页第2.4.8节中的readthedocs中的文档指南进行操作,但我似乎没有任何运气.

all*_*aps 11

当多个应用程序提供相同资源的不同版本(模板,静态文件,管理命令,转换)时,INSTALLED_APPS中首先列出的应用程序具有优先权.查看文档.

更改:

INSTALLED_APPS = (
    'django.contrib.admin',
    ...
    'new_app',
)
Run Code Online (Sandbox Code Playgroud)

至:

INSTALLED_APPS = (
    'new_app',
    'django.contrib.admin',
    ...
)
Run Code Online (Sandbox Code Playgroud)

您的模板new_app现在应该在之前的模板中找到contrib.admin.


vis*_*ell -1

转到第 607 页。

自定义模板选项 覆盖管理模板部分介绍了如何覆盖或扩展默认管理模板。使用以下选项覆盖视图使用的默认模板ModelAdmin

在那里您将获得如何使用 覆盖特定模型的模板的选项ModelAdmin

相同的(我没有比较,但看起来很相似)文档可以在 django 站点上找到:自定义模板选项