extra_context'unicode'对象的django不支持项目赋值

时间:2015-06-10 09:34:26

标签: python django

我有这个模型管理类,我需要为自定义模板添加一个额外的变量:

class ArticleAdmin(admin.ModelAdmin):
    def change_view(self, request, extra_context=None):
        extra_context = extra_context or {}
        print extra_context
        extra_context["show_save_as_draft"] = True
        return super(ArticleAdmin, self).changelist_view(request, extra_context=extra_context)

在测试时我遇到了这个错误:

TypeError at /admin/news/article/4/
'unicode' object does not support item assignment

回顾过去,我得到了以下内容:

/home/sadaf2605/PycharmProjects/stripe/stripe/news/admin.py in change_view
        extra_context["show_save_as_draft"] = True ...
▼ Local     vars
Variable    Value
self    <news.admin.ArticleAdmin object at 0x7f2ad3eb21d0>
extra_context   u'4'

我们可以看到extra_context在这里被调用4,我应该如何对待它?

2 个答案:

答案 0 :(得分:1)

这不是change_view方法的正确签名。它应该是:

def change_view(self, request, object_id, form_url='', extra_context=None):

您错过了object_id参数,因此值(4)将转入extra_context。

请记住也要更新您的超级电话。

答案 1 :(得分:0)

  

请检查超级方法调用,定义一个方法   change_view,但在超级你指定changelist_view,所以有一个   不匹配的函数调用

class ArticleAdmin(admin.ModelAdmin):
def change_view(self, request, extra_context=None):
    extra_context = extra_context or {}
    print extra_context
    extra_context["show_save_as_draft"] = True
    return super(ArticleAdmin, self).change_view(request, extra_context=extra_context)
  

另请查看此click here