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



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

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()

最新更新