我有一些查询集逻辑,我很乐意在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()