Добавление контекстной переменной в change_view невозможно, потому что extra_context не является словарем

Я хотел бы добавить поле в ModelAdmin.change_view() для фильтрации моих встроенных объектов.

На основе этого решения Я попытался внедрить в него дополнительный_контекст:

class ProcessAdmin(admin.ModelAdmin):
    inlines = [StepInline,]
    exclude = ('steps',)
    prepopulated_fields = {'name_slug': ('name',)}

    def change_view(self, request, extra_context=None):
        print(extra_context)
        extra = extra_context or {}
        extra['filter_form'] = FilterForm()
        return super(ProcessAdmin, self).change_view(request, extra_context=extra)

К сожалению, переменная метода extra_context является строкой юникода, и django вызывает:

TypeError, Exception Value: 'unicode' object does not support item assignment

при звонке /admin/core/process/5/.

Можно ли вставить object_id в словарь extra_context, чтобы внедрить форму для фильтрации?


person GregorVolkmann    schedule 07.05.2015    source источник


Ответы (1)


Метод ModelAdmin.change_view() имеет другая подпись:

def change_view(self, request, object_id, form_url='', extra_context=None):
    extra = extra_context or {}
    extra['filter_form'] = FilterForm()
    return super(ProcessAdmin, self).change_view(request, object_id,
                                                 form_url, extra_context=extra)
person catavaran    schedule 07.05.2015
comment
Спасибо, моя вина. ModelAdmin.changelist_view() имеет разные аргументы метода. - person GregorVolkmann; 07.05.2015