2011-03-01 99 views
0

我試圖船舷上的模型是抽象的保存()函數的保存()函數,我得到一個錯誤Django的:覆蓋的抽象模型

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 

(對於那些誰是熟悉的,我伸出的百日草,博客的Entry模式,但不認爲這是有關)

回答

4

self.__class__().objects應該是self.__class__.objects

參見檢索對象的http://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects

經理都可以訪問只能通過模型​​類,而不是從模型的情況下,執行「表格級」操作和「記錄級之間的分離「操作。

+2

'self .__ class __。objects'或'EntryBlog.objects',無論哪個看起來更清潔。 – 2011-03-01 23:56:32

+0

ahh woops,謝謝! – neolaser 2011-03-02 00:04:28

+0

我不能使用'EntryBlog.objects',因爲它是抽象的並且在嘗試更新時掙扎。自我.__ class__像一個魅力一樣工作。一如既往,謝謝! – neolaser 2011-03-02 00:13:14