我有一个小模型方法,用于获取相对于当前对象的上一个和下一个对象。它看起来像这样:
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()并获取我的列表。< / p>
我到目前为止:
class PrevNextMixin(object):
objects = list(???.objects.all())
i = objects.index(self)
...
答案 0 :(得分:2)
mixin仍然是一个类。代码仍然需要进入方法。该方法将获得self
参数,就像现在一样。
class PrevNextMixin(object):
def get_prev_next(self):
objects = list(self.__class__.objects.all())