Как зарегистрировать класс для change_form.html в шаблоне администратора и использовать ключ объекта?

Вопрос:

Я использую django 1.6 с python 2.7.6

В admin.py у меня есть некоторые функции, такие как def getJson (id), который принимает идентификатор и делает много вещей с моделью из db и возвращает JSON как строку.

Как передать это переменной change_form.html? (Я уже переопределил этот файл)

Чтобы сделать материал со списком, это: admin.site.register(Object, ObjectAdmin) а затем я делаю вещи в классе ObjectAdmin

Но если я хочу получить доступ к admin/appName/Object/123, как передать этот 123 id классу для использования моей определенной функции getJson (id)?

должен ли он быть чем-то вроде admin.site.register_single (Obj, ObjAdmin), а затем у меня есть какой-то доступ к obj_key в классе ObjAdmin?

Я не хочу делать все, что делает getJson в шаблоне, потому что функция длинная, и это тоже не имеет смысла.

Благодарю.

Лучший ответ:

В документации достаточно ясно:

class MyModelAdmin(admin.ModelAdmin):

    # A template for a very customized change view:
    change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['osm_data'] = self.get_osm_info()
        return super(MyModelAdmin, self).change_view(request, object_id,
            form_url, extra_context=extra_context)

Оцените статью
TechArks.Ru
Добавить комментарий