如何仅针对 1 个应用程序覆盖 django edit_inline/tabular.html?

Posted

技术标签:

【中文标题】如何仅针对 1 个应用程序覆盖 django edit_inline/tabular.html?【英文标题】:How to override django edit_inline/tabular.html for only 1 app? 【发布时间】:2011-01-16 20:30:29 【问题描述】:

如果我将edit_inline/tabular.html 保存在我的整个模板目录中(例如mysite/templates/admin/edit_inline/tabular.html),我可以覆盖它,但是当我尝试使用其他管理模板保存它时,例如change_form.html(在mysite/myapp/templates/admin/myapp/mymodel/change_form.html 中,它不会不行。

【问题讨论】:

【参考方案1】:

我遇到了这个有点旧的线程,实际上对于内联模型,您需要在 admin.py 中明确设置新模板,如下所示:

class ModelInlineAdmin(admin.StackedInline):
    model = Product
    template = "admin/products/product/edit_inline/stacked.html"

检查这个http://blog.ruedaminute.com/2011/05/django-journal-override-a-django-admin-template-inline-or-otherwise/

【讨论】:

感谢您的回答,请注意提供的链接已失效。【参考方案2】:

The documentation 暗示内联可以具有template 属性。尝试将其设置为admin/myapp/mymodel/edit_inline/tabular.html,并在myapptemplates目录下创建相应的模板文件。

【讨论】:

【参考方案3】:

表格是这样的:

templates/admin/app_name/override.html

对于你的 change_form.html 例子,它应该是这样的:

mysite/templates/admin/myapp/change_form.html

请参阅http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates 了解更多信息。

【讨论】:

这不回答关于内联的问题,只回答常规的管理页面。

以上是关于如何仅针对 1 个应用程序覆盖 django edit_inline/tabular.html?的主要内容,如果未能解决你的问题,请参考以下文章

仅针对经过身份验证的用户的 Django 缓存

仅针对测试数据覆盖 Grails dateCreated 和 lastUpdated?

每个模型覆盖 django admin change_list_results.html

仅针对一项操作覆盖控制器 AuthorizeAttribute

Django - 覆盖 Model.create() 方法?

覆盖 Ansible 模块选项默认值