2013-05-14 2 views
0

У меня есть модель Django администратора, как этотКак я могу изменить шаблон администратора Django на лету

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

Теперь я хочу 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

+0

вы можете – gipi