通过 django-model-utils 将自定义查询集附加到模型
Attaching custom queryset to model via django-model-utils
我正在尝试定义自定义 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)
如前所述,turns out
PassThroughManager was removed in django-model-utils 2.4. Use Django’s
built-in QuerySet.as_manager() and/or Manager.from_queryset()
utilities instead.
我尝试重写代码(抱歉,如果它看起来太愚蠢,我有几个月的经验仍在盲目思考以赶上最后期限)
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)
。谁能阐明正确的语法?
您应该直接在 FooQuerySet 上调用 as_manager
:
objects = FooQuerySet.as_manager()
我正在尝试定义自定义 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)
如前所述,turns out
PassThroughManager was removed in django-model-utils 2.4. Use Django’s built-in QuerySet.as_manager() and/or Manager.from_queryset() utilities instead.
我尝试重写代码(抱歉,如果它看起来太愚蠢,我有几个月的经验仍在盲目思考以赶上最后期限)
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)
。谁能阐明正确的语法?
您应该直接在 FooQuerySet 上调用 as_manager
:
objects = FooQuerySet.as_manager()