【问题标题】:Abstract Django model doesn't have a "model" attribute?抽象 Django 模型没有“模型”属性?
【发布时间】:2016-01-10 03:13:02
【问题描述】:

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

“项目”对象没有属性“模型”

在抽象类的 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 属性吗?

【问题讨论】:

    标签: python django orm


    【解决方案1】:
    super(HistoryTrackedModel, self).save(*args, **kwargs)  
    

    应该可以。

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2021-04-11
      • 2012-08-17
      相关资源
      最近更新 更多