首页 文章

摘要Django模型没有“模型”属性?

提问于
浏览
0

我在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() 方法时,我收到以下错误:

'Project'对象没有属性'model'

它在抽象类的save方法中的 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 回答

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

    应该管用 .

相关问题