不可能将上下文变量添加到change_view中,因为extra_context不是字典

Gre*_*ann 3 django django-admin django-1.7

我想在 ModelAdmin.change_view() 上添加一个字段来过滤我的内联对象。

基于这个解决方案,我尝试将 extra_context 注入其中:

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)
Run Code Online (Sandbox Code Playgroud)

不幸的是,方法变量extra_context是一个 unicode 字符串,django 引发:

TypeError, Exception Value: 'unicode' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

打电话时/admin/core/process/5/

是否可以将 object_id 插入 extra_context 字典中以注入表单进行过滤?

cat*_*ran 6

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)
Run Code Online (Sandbox Code Playgroud)