Django:覆盖抽象模型的save()函数

时间:2011-03-01 23:44:26

标签: python django django-models

我试图在抽象的模型上覆盖save()函数,并且收到错误

Manager isn't accessible via Entry instances

因此,如果可能,如何覆盖抽象模型上的保存功能。从此扩展的模型是Entry

这是我的模型代码:

class EntryBlog(EntryAbstractClass):
    groups = models.ManyToManyField(group, null=True, blank=True)    

    def save(self, *args, **kwargs):
        if self.featured:
            self.__class__().objects.all().update(featured = False)
        super(EntryBlog, self).save(*args, **kwargs)

    class Meta:
        abstract = True

(对于那些熟悉的人,我正在zinnia博客上扩展Entry模型,但不认为这是相关的)

1 个答案:

答案 0 :(得分:4)

self.__class__().objects应为self.__class__.objects

在检索对象时查看 Notes http://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects

  

管理员只能通过模型​​类访问,而不能通过模型​​实例访问,以强制“表级”操作和“记录级”操作之间的分离。