Django:重写抽象模型的save()函数
我尝试在一个抽象模型上重写save()函数,但遇到了错误。
Manager isn't accessible via Entry instances
所以,如果可以的话,如何在一个抽象模型上重写save函数呢?这个抽象模型的子类是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-blog上扩展Entry
模型,但我觉得这并不重要。)
1 个回答
5
self.__class__().objects
应该改成 self.__class__.objects
。
查看关于获取对象的 说明:http://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects
管理器只能通过模型类来访问,而不能通过模型实例来访问,这样可以区分“表级别”的操作和“记录级别”的操作。