我可以在一组给定的对象上使用自定义 Django 管理器吗?

Can I use a custom Django manager on a given set of objects?

我有一些我很乐意在管理器中拥有的查询集逻辑。我已经在现有查询集中拥有这些对象,我只想对它们重新排序。我正在考虑做这样的事情:

class WorkdayManager(Manager):

    def ordered_by_time_available(self):
        results = self.annotate(
            remaining=(F('duration') * 60) - Coalesce((Sum('records__minutes_planned')), 0)
        )
        return results.order_by(['-remaining'])
    

我想这样使用它:

workday_objs.ordered_by_time_available()

这行得通吗?或者我应该使用不同的东西吗?

这种方法似乎有效:

from django.db.models import QuerySet


class WorkdayQueryset(QuerySet):

    def ordered_by_time_available(self):
        results = self.annotate(
            remaining=(F('duration') * 60) - Coalesce((Sum('records__minutes_planned')), 0)
        )
        return results.order_by('-remaining')


class Workday(models.Model):
    ...
    objects = WorkdayQueryset.as_manager()