1

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

从 model_utils.managers 导入 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)

如前所述,事实证明

PassThroughManager 在 django-model-utils 2.4 中被移除。请改用 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)。任何人都可以用正确的语法阐明吗?

4

1 回答 1

1

您应该as_manager直接在 FooQuerySet 上调用:

objects = FooQuerySet.as_manager()
于 2016-08-08T09:19:22.790 回答