我有像这样的Django Admin模型
class STUDENTAdmin(ModelAdmin):
change_list_template = "students/student_change_list.html"
现在我想根据一些请求参数动态更新它
之类的东西if request.GET['foo']:
change_list_template = "students/student_change_list_other.html"
我该怎么做
答案 0 :(得分:1)
我认为您需要覆盖changelist_view
并对其返回的TemplateResponse()
进行操作,或者在该调用之前更改保存该名称的变量。
原始功能就像这样
def changelist_view(self, request, extra_context=None):
# a lot of stuff happen here
return TemplateResponse(request, self.change_list_template or [
'admin/%s/%s/change_list.html' % (app_label, opts.object_name.lower()),
'admin/%s/change_list.html' % app_label,
'admin/change_list.html'
], context, current_app=self.admin_site.name)
所以我觉得像
这样的代码def changelist(self, request, extra_context=None):
if request.GET['foo']:
self.change_list_template = "students/student_change_list_other.html"
return super(STUDENTAdmin, self).changelist_view(request, extra_context)