覆盖Django管理后台的change_list_results.html模板以适用于特定模型。

6
我想要仅针对特定的模型覆盖change_list_results.html。我尝试将文件复制到相应的树目录中(templates/admin/APP/MODEL),但这种方法不起作用。在文档中,我看到可以按应用程序或模型进行覆盖,但没有描述实现此目的的特殊方法。我发现了一些相关的答案关于覆盖change_list.html,但我只想覆盖change_list_results.html,我不知道如何做到这一点。有什么方法可以进行覆盖吗?
2个回答

8

我曾经遇到同样的问题并找到了这篇旧帖子。我想你应该已经解决了自己的问题。

无论如何,我做错的是使用了模型的复数名称,而且还使用了小写名称。你必须确保以下内容:

  • 将模板保存在/templates/admin/APP/MODEL 中,就像你说的那样
  • 检查模型名称中的大小写
  • 听起来很傻,但以防万一……不要使用模型的复数名称

祝你好运!


我曾经遇到过同样的问题,我的一个模型名字由两个单词(FooMoo)组成。在管理界面中,它被重写为“foo_moo”,但是要覆盖模板,您需要创建一个名为“foomoo”的目录。 - Kaël

2
这可能与freethinker6的回答不同:change_list_results.html目前是硬编码的,但可能已经发生了变化。

对于 INSTALLED_APPS 中的每个应用程序,app_directories.Loader 会查找一个名为 "templates" 的子目录。如果该目录存在,则 Django 会在其中查找模板。 - Soitje
您可以使用自己的文件覆盖此模板。但是,此覆盖将应用于管理中的所有模型,并且问题要求如何为单个模型覆盖它。 - Nathan Reynolds
下面由freethinker6和Kaël发布的方法可行,至少对于我正在使用的Django 3.2.4是有效的。 - Hiep Ho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接