django modelAdmin save_model()只需5个参数(给定6个)

时间:2015-05-28 14:50:54

标签: python django

我正在使用双星仍然继续为此代码说save_model() takes exactly 5 arguments (6 given)save_model() takes exactly 3 arguments (6 given)

class ArticleAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, *kwwargs):
        if request.user.is_superuser or request.user==obj.author:
            super(ArticleAdmin,self).save_model(self, request, obj, *kwwargs)
        else:
            raise ValidationError("author must be you")

我做错了什么?

1 个答案:

答案 0 :(得分:0)

调用超类方法时,不要传递self参数。所以,它将是:

super(ArticleAdmin, self).save_model(request, obj, **kwargs)
  

你有一个拼写错误,它假设是kwargs而不是kkwargs

     

kwargs中,您通常使用双星号**kwargs而不是单个星号。这包括函数定义中的那些。 def save_model(self, request, obj, **kwargs):单个星号用于*args kwargs代表关键字参数

     

在python 3中,你只需要使用super().save_model(request, obj, **kwargs)