摘要Django模型没有"模型"属性?

时间:2015-10-12 15:15:08

标签: python django orm

我在Django应用程序中有一个抽象模型:

class HistoryTrackedModel(models.Model):
    def save(self, *args, **kwargs):
        super(self.model, self).save(*args, **kwargs) # Call the real save method
        # Do some miscellaneous work here (after saving)

    class Meta:
        abstract = True

子模型使用抽象模型作为基础:

class Project(HistoryTrackedModel):
    name = models.TextField(unique=True, blank=False, db_index=True)
    ... other fields ...

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ('name',)

当我实例化Project的实例(子模型)并调用save()方法时,我收到以下错误:

  

'项目'对象没有属性' model'

它在抽象类的保存方法中super(self.model, self).save()调用失败了。我试图将该方法更改为以下方法,但它(很明显,现在我看一下)会在递归循环中被捕获:

class HistoryTrackedModel(models.Model):
    def save(self, *args, **kwargs):
        my_model = type(self)
        super(my_model, self).save(*args, **kwargs) # Call the real save method

我在这里做错了什么?不应该从基类继承的所有子类(它本身都继承自models.Model)包含model属性吗?

1 个答案:

答案 0 :(得分:4)

super(HistoryTrackedModel, self).save(*args, **kwargs)  

应该有用。