django-admin: 重写save方法时出现“super()参数1必须是类型,而不是None”

3 投票
4 回答
1361 浏览
提问于 2025-04-16 08:21

唉,又遇到一个没用的错误,让我花了一个小时来解决这个问题。

我有一个叫做 'CompanyProfile' 的模型,之前一直运行得很好,但现在当我试着通过管理后台保存这个模型时,出现了一个错误,似乎在告诉我对象引用是空的。我完全不知道该怎么解决这个问题。

我照常在做所有的事情:

def save(self, force_insert=False, force_update=False):
    super(CompanyProfile, self).save(force_insert, force_update)

我重启了服务器,重新安装了django,清空了数据库,还是没用。有没有人有好的主意,或者之前遇到过这个问题?

4 个回答

1

试着按照这里的文档中的save()重写示例来做。注意使用了*args, **kwargs这两个东西。如果这样还不行,那就说明问题很严重。

1

当你在重写模型方法的时候,需要使用 args 和 kwargs:http://docs.djangoproject.com/en/dev/topics/db/models/#overriding-model-methods

另外,传递可以传给模型方法的参数也很重要——这就是 *args 和 **kwargs 的作用。Django 有时候会扩展内置模型方法的功能,增加新的参数。如果你在方法定义中使用 *args 和 **kwargs,确保你的代码在这些新参数添加时会自动支持它们。

4

可能是循环导入的问题?

在这个例子中,他在一个信号里有一个导入语句,这就是问题所在。

你可以检查一下globals(),看看有没有类似的情况。

撰写回答