Django模型中的抽象继承,导致最大递归深度错误

Django模型中的抽象继承,导致最大递归深度错误,django,inheritance,recursion,depth,Django,Inheritance,Recursion,Depth,我试图用以下代码在Django中实现抽象继承,但它会产生一个最大递归深度错误。我试图覆盖模型的save方法 class BaseModel(models.Model): class Meta: abstract = True def save(self, *args, **kwargs): #i'm doing something here #i think the problem is in the return statem

我试图用以下代码在Django中实现抽象继承,但它会产生一个最大递归深度错误。我试图覆盖模型的
save
方法

class BaseModel(models.Model):
    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        #i'm doing something here

        #i think the problem is in the return statement specifically because of the
        #self.__class__ expression.
        return super(self.__class__, self).save(*args, **kwargs)

class MyModel(BaseModel):
    p = models.CharField(max_length=30)
产生此错误(跟踪结束,很长):


不要给自己打电话!在实际类中调用它:

return super(BaseModel, self).save(*args, **kwargs)

这是因为
self.\uuuuuu class\uuuuu
总是指实例的实际具体类。因此,如果您从
BaseModel
继承
MyModel
,当您进入
BaseModel
self中的
save
方法时,\uuuu class\uuuu
仍然是
MyModel
。因此,它找到MyModel的超级,即BaseModel,因此调用save in BaseModel,它再次找到MyModel的超级…

您是否尝试过用
BaseModel
替换
self.\uu class\uuuu
?顺便说一下,您不需要
返回
,因为
保存
不会返回任何内容。哦,真的很有帮助。非常感谢。“模型”类“保存”不返回任何内容!
return super(BaseModel, self).save(*args, **kwargs)