【问题标题】:Django admin - Custom change_form.html and 3rd party apps custom change_formDjango 管理员 - 自定义 change_form.html 和 3rd 方应用程序自定义 change_form
【发布时间】:2016-07-15 09:53:54
【问题描述】:

我目前正在自定义我的模型的管理模板,但我遇到了 ModelAdmin 的问题,它继承了 django-importexport 或 django-modelclone 等 3rd 方模板。

这两款应用都带有change_list.htmlchange_form.html。它们每个都扩展admin/change_list.htmladmin/change_form.html

所以我的模型管理员看起来像这样:

class MyModelAdmin(SuitObjectActionsMixin, ImportExportModelAdmin, ClonableModelAdmin):

我尝试通过将文件 change_form.html 添加到 /templates/myapp/mymodel/ 来自定义我的 ModelAdmin。我知道这应该适用于不从任何第三方应用程序继承的其他管理员。

使用调试工具栏,使用的模板似乎是扩展标准change_form.htmldjango-modelclone 之一,而不是我创建的模板。

似乎第 3 方应用程序模板仅通过扩展标准模板即可覆盖任何“本地”自定义模板。

有没有干净的方法来解决这个问题?

【问题讨论】:

    标签: django templates


    【解决方案1】:

    您可以在 ModelAdmin 类中指定更改表单模板和更改列表模板:

    class MyModelAdmin(A, B, C):
        change_form_template = 'path/to/my_change_form.html'
        change_list_template = 'path/to/my_change_list.html'
    

    那个在类似情况下对我有用。

    【讨论】:

    • 如果您想完全覆盖模板,但在我的情况下不是这样,这很好。例如,django-modelclone 只需在其change_form.html 中添加一个操作按钮,我仍然希望在我的自定义模板中使用此按钮。
    • 如果您的意思是管理员操作,如果您放置自己的模板,您将拥有它。如果比较复杂,可以复制modelclone或者其他电池的html模板,自定义。例如,我用 grappelli 做到了这一点。
    • 忘记回复抱歉...最终按照您的建议进行操作,将第 3 方应用程序的 HTML 直接添加到模板中
    猜你喜欢
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2016-03-01
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多