2014-09-10 83 views
0

我有一個小模型方法,用於獲取與當前對象相關的上一個和下一個對象。它看起來像這樣:Django從mixin中獲取對象

class Article 
    ... 
    def get_prev_next(self): 
     articles = list(Article.objects.all()) 
     i = articles.index(self) 
     try: 
      p = articles[i - 1] 
     except IndexError: 
      p = None 
     try: 
      n = articles[i + 1] 
     except IndexError: 
      n = None 

     return {'prev': p, 'next': n} 

它的工作原理,可能效率不高,但現在我想用它在一個不同的模型。

我想把它變成一個mixin,但我不知道如何獲取原始模型類名,以便我可以運行Model.objects.all()並獲取我的列表。

我到目前爲止有:

class PrevNextMixin(object): 
    objects = list(???.objects.all()) 
    i = objects.index(self) 
    ... 

回答

2

一個mixin仍然是一個類。代碼仍然需要進入一種方法。該方法將得到一個self參數,就像它現在一樣。

class PrevNextMixin(object): 
    def get_prev_next(self): 
     objects = list(self.__class__.objects.all()) 
+0

我知道它需要去一個方法,只是在我的部分快速打字。自我.__ class__是什麼不是我的大腦。謝謝! – 2014-09-10 14:12:15