2010-10-23 1 views
2

Я хотел бы передать аргумент {{x}} в свой файл change_form.html, который находится в /home/django/project/app/template/admin/change_form.html. Я нашел этот код, но он не работает:django change_form.html

class MyModelAdmin(admin.ModelAdmin): 
    # A template for a very customized change view: 
    change_form_template = 'admin/change_form.html' 

    def get_osm_info(self): 
     z = Klass() 
     x = z.final_down() 
     return x 

    def change_view(self, request, object_id, extra_context=None): 
     my_context = { 'x': get_osm_info(),} 
     return super(MyModelAdmin, self).change_view(request, object_id,extra_context=my_context) 
+3

"Это не работает" не дает нам достаточно информации. Когда вы сообщаете о проблемах, всегда объясняйте, что вы ожидали увидеть, и то, что вы на самом деле видели. Трассировки стека (если они есть) действительно полезны. –

+0

Плюс, это поможет узнать, что такое 'Klass' и' final_down'. –

ответ

2

Я думаю, что я могу на самом деле ответить на этот вопрос (для кого-либо еще, что найти этот вопрос через Google).

Django 1.4 фактически изменил способ изменения_view, и некоторые документы или фрагменты, которые вы можете найти в Интернете, еще не обновлены.

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_view

Другими словами, это должно работать:

class MyModelAdmin(admin.ModelAdmin): 
    # A template for a very customized change view: 
    change_form_template = 'admin/change_form.html' 

    def get_osm_info(self): 
     z = Klass() 
     x = z.final_down() 
     return x 

    def change_view(self, request, object_id, form_url='', extra_context=None): 
     context = {} 
     context.update(extra_context or {}) 
     context.update({ 'x': get_osm_info(),}) 
     return super(MyModelAdmin, self).change_view(request, object_id, form_url, context) 
+1

Я пытаюсь, но не могу заставить его выплюнуть значение в шаблоне ... – radtek