通过django-model-utils将自定义查询集附加到模型

时间:2016-08-08 09:17:28

标签: django django-model-utils

我正在尝试定义自定义QuerySet子类,并使用django-model-utils将其附加到我的模型。在之前的Django版本中(我使用的是1.9), PassThroughManager 用于通过以下代码实现此目的:

from model_utils.managers import PassThroughManager

class FooQuerySet(models.query.QuerySet):
    def my_custom_query(self):
        return self.filter(...)

class Foo(models.Model):
    # fields go here..

    objects = PassThroughManager.for_queryset_class(FooQuerySet)

如上所述,它是turns out

  

在django-model-utils 2.4中删除了PassThroughManager。使用Django的   内置QuerySet.as_manager()和/或Manager.from_queryset()   实用工具。

我试图重写代码(对不起,如果它看起来太愚蠢,我有几个月的经验仍在做一些盲目思考以满足截止日期)

class FooQuerySet(models.query.QuerySet):
    def my_custom_query(self):
        return self.filter(...)

class Foo(models.Model):
    # fields go here...
    objects = QuerySet.as_manager(FooQuerySet)

至于现在,我最终得到了TypeError: as_manager() takes exactly 1 argument (2 given)。任何人都可以用正确的语法解释一下吗?

1 个答案:

答案 0 :(得分:1)

您应该直接在FooQuerySet上调用as_manager

objects = FooQuerySet.as_manager()