仅针对某些模型覆盖 Django 管理员 change_list_results.html
Posted
技术标签:
【中文标题】仅针对某些模型覆盖 Django 管理员 change_list_results.html【英文标题】:Overriding the Django admin change_list_results.html only for some models 【发布时间】:2011-08-21 06:04:23 【问题描述】:我只想为我的一个模型覆盖 templates/admin/change_list_results.html 和 templates/admin/change_list.html 模板。 如何告诉管理员将此模型与我的应用程序中的所有其他模型区分开来并呈现与默认不同的更改模板? 如果我只是编辑 change_list_results.html,那么管理视图中的所有模型都会反映我的更改。
【问题讨论】:
【参考方案1】:您可以,请参阅文档here。
简短的版本是您需要在模板路径中的admin/your-app-name/your-model-name/change_list.html
处的自定义模板。它可以在应用程序中或在您的根模板目录中。
一个问题是 Django 需要先找到它,然后才能在 django.contrib.admin
中找到默认的“admin/change_list.html”。如果它在应用程序中,请确保该应用程序在INSTALLED_APPS
中之前 django.contrib.admin
列出。我通常只是将管理模板覆盖放在我的根模板文件夹中,因为它会在应用程序之前加载。
【讨论】:
这不适用于 change_list_results.html,因为它不支持 your-app-name/your-model-name 样式覆盖。【参考方案2】:恕我直言,因为 change_list_results.html 是从 template_tag -> result_list 调用的。
https://github.com/django/django/blob/master/django/contrib/admin/templates/admin/change_list.html#L91
https://github.com/django/django/blob/65cf82bd08631a7aa8d9dd007b2527476fa3304f/django/contrib/admin/templatetags/admin_list.py#L288
我想看看如果你覆盖或修改该模板标签会发生什么。但是导入顺序在这方面发挥了很大作用。
【讨论】:
以上是关于仅针对某些模型覆盖 Django 管理员 change_list_results.html的主要内容,如果未能解决你的问题,请参考以下文章
每个模型覆盖 django admin change_list_results.html
如何仅针对 1 个应用程序覆盖 django edit_inline/tabular.html?
OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体