2013-05-14 79 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