Django - 管理员 - 如何为模型代理重写change_list模板?
我做了一个简单的Django应用程序。我有一个模型叫“Visitor”(访客)。我的目标是在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
5
试着把你的文件夹名字都改成小写。
注意,管理应用会在查找目录时把模型名称变成小写,所以如果你打算在区分大小写的文件系统上运行你的应用,确保你的目录名称全部使用小写字母。
另外,你有没有检查过你的模板目录是否正常工作?TEMPLATE_DIRS
需要包含你的模板文件夹,并且要确保 filesystem
模板加载器在 app_directories
加载器之前。
最后,你可以通过 ModelAdmin 属性来指定一个模板: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_list_template