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

时间:2011-03-30 15:06:41

标签: python django django-admin django-templates

我制作了一个简单的Django应用程序。我有一个模型“访客”。我的目标是在Django管理员中出现两个表。一个与所有访客一起,一个只有今天的访客。

按照these instructions的说法,我完成了以下代码。但我不知道如何仅仅覆盖仅为VisitorExpectedTodayProxy的change_list.html。

我尝试关注instructions here,然后创建了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 个答案:

答案 0 :(得分:5)

除了将您的路径小写为:

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

答案 1 :(得分:3)

尝试小写文件夹名称。

  

注意,管理员应用会   查看时小写模型名称   对于目录,所以请确保你   将目录命名为全部小写if   你打算运行你的应用程序   区分大小写的文件系统。

另外,您是否已查看确保模板目录正常工作的清单? TEMPLATE_DIRS需要包含您的此模板文件夹,并确保filesystem模板加载程序位于app_directories加载程序之前。

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