Если вы хотите использовать свои методы набора запросов внутри цепочки запросов, а не только непосредственно после менеджера, вы должны определить их как методы настраиваемого класса QuerySet, который вы подключаете к менеджеру.
Описываются два решения в документации Django Создание менеджера с методами QuerySet .
Общая часть - настраиваемый класс QuerySet с методами набора запросов
class MyCustomQuerySet(models.QuerySet):
def get_by_tag(self, tag_name):
return self.filter(post__pk__in=Post.objects.filter(tags__pk=tag_name))
# more possible queryset methods ...
A) , если у вашего менеджера есть только методы набора запросов и нет других настраиваемых методов тогда вы можете создать его просто из QuerySet.
class MyModel(models.Model):
objects = MyCustomQuerySet.as_manager()
B) , если вашему менеджеру нужны также другие методы, которые не возвращают набор запросов:
class MyCustomManager(models.Manager):
... # other methods
class MyModel(models.Model):
objects = MyCustomManager.from_queryset(MyCustomQuerySet)()