Django从mixin获取对象

时间:2014-09-10 13:43:17

标签: python django

我有一个小模型方法,用于获取相对于当前对象的上一个和下一个对象。它看起来像这样:

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)
    ...

1 个答案:

答案 0 :(得分:2)

mixin仍然是一个类。代码仍然需要进入方法。该方法将获得self参数,就像现在一样。

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