2013-05-14 46 views
0

我有这样我怎样才能改变Django管理模板上飞

class STUDENTAdmin(ModelAdmin): 
    change_list_template = "students/student_change_list.html" 

Django管理模型现在我想chnage动态基于一些请求参数 像

if request.GET['foo']: 
     change_list_template = "students/student_change_list_other.html" 

我怎么能做到这一点

回答

1

我认为你需要重写changelist_view并从它返回的TemplateResponse()作用或改变VA在那次电话会议之前拿着那个名字。

原有的功能是这样的

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) 
+0

谢谢哥们,这是很好的 – user2330497 2013-05-14 09:46:48

+0

欢迎您 – gipi 2013-05-14 10:45:26