Django - 管理员 - 如何为模型代理覆盖change_list模板?

4
我创建了一个简单的Django应用程序。我有一个模型“访客”。我的目标是在Django管理中出现两个表格。一个表格包含所有访客,另一个表格只包含今天的访客。
通过按照这些指示所述的代码,我已经使所有内容都正常工作。但是我不确定如何仅覆盖“VisitorExpectedTodayProxy”的change_list.html。
我尝试按照这里的说明进行操作,并创建了Site/templates/admin/ VisitorLog / VisitorExpectedTodayProxy/change_list.html 并在那里进行更改,但似乎没有起作用。 Models.py
class Visitor(models.Model):
    visit_datetime = models.DateTimeField(null=True)
    visitor_name = models.CharField(max_length=500)

#Make dummy models for different object views in admin interface
class VisitorExpectedTodayProxy(Visitor):
    class Meta:
        proxy=True
        verbose_name = "Visitor"
        verbose_name_plural = "Today's Visitors and Regular Visitors"
2个回答

7

除了将路径转换为小写外,还需要使其看起来像:

templates/admin/visitorlog/visitorexpectedtodayproxy/change_list.html

您需要在change_list.html中扩展默认的admin/change_list内容。
{% extends "admin/change_list.html" %}

您可以通过查看django源代码中的各种块模板来自定义此页面的不同部分:

django/contrib/admin/templates/admin/change_list.html

我只是把change_list.html复制到目录中并在那里进行了修改。有更好的方法吗? - Greg

5

尝试将文件夹名称改为小写。

请注意,当寻找目录时,管理应用程序将使模型名称小写,因此,如果您要在区分大小写的文件系统上运行应用程序,请确保将目录命名为全部小写。

另外,您是否已经检查过确保您的模板目录是否有效?TEMPLATE_DIRS需要包含您的这些模板文件夹,并确保filesystem模板加载器位于app_directories加载器之前。

最后,您可以通过ModelAdmin属性指向模板: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_list_template


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