我有这个模型管理类,我需要为自定义模板添加一个额外的变量:
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,我应该如何对待它?
答案 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