我可以在一组给定的对象上使用自定义 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()
我有一些我很乐意在管理器中拥有的查询集逻辑。我已经在现有查询集中拥有这些对象,我只想对它们重新排序。我正在考虑做这样的事情:
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()