Python Django客户经理
我正在看一些代码,我很好奇这是否是一个好的实践Python Django客户经理,python,django,models,django-custom-manager,Python,Django,Models,Django Custom Manager,我正在看一些代码,我很好奇这是否是一个好的实践 class ToDoManager(models.Manager): def scheduled(self): """ Returns QuerySet of all things to be done. """ return self.filter(...) class ImpStuff(models.Model):
class ToDoManager(models.Manager):
def scheduled(self):
"""
Returns QuerySet of all things to be done.
"""
return self.filter(...)
class ImpStuff(models.Model):
....model definition
objects=TodoManager
我一直看到自定义管理器覆盖get\u query\u set(解释)方法。这是处理事情的好方法吗?我以前也这样做过。它工作得很好。所以除非你看我的代码,世界上显然有两个人觉得这很有用 它不是覆盖
get\u query\u set
的替代方法-它提供了获取(筛选)实例的其他方法。你可以同时做这两件事(在合理的范围内)
你期待什么问题
PS这种方法也在Pro Django中使用,第274页以后,其中管理器通过
most_-recent()
等方法进行扩展。它工作得很好。所以除非你看我的代码,世界上显然有两个人觉得这很有用
它不是覆盖get\u query\u set
的替代方法-它提供了获取(筛选)实例的其他方法。你可以同时做这两件事(在合理的范围内)
你期待什么问题
PS这种方法也在Pro Django中使用,第274页以后,管理器通过
most_-recent()
等方法进行扩展,使用模型管理器包装复杂的ORM查询是非常枯燥和推荐的。您可以向这些方法中添加参数,并节省大量代码:
class ToDoManager(models.Manager):
def scheduled(self, start_date, end_date):
"""
Returns tasks to be done within two dates.
"""
return self.filter(...)
那么你只要做:
todo_tasks = ImpStuff.objects.scheduled(datetime.now(), datetime.datetime.now() + datetime.timedelta(3))
在Github上提供的许多开源Django应用程序中都使用了管理器。使用模型管理器包装复杂的ORM查询是非常枯燥和推荐的。您可以向这些方法中添加参数,并节省大量代码:
class ToDoManager(models.Manager):
def scheduled(self, start_date, end_date):
"""
Returns tasks to be done within two dates.
"""
return self.filter(...)
那么你只要做:
todo_tasks = ImpStuff.objects.scheduled(datetime.now(), datetime.datetime.now() + datetime.timedelta(3))
很多开源Django应用程序都使用管理器,Github上提供了管理器。是的,我希望使用类似Model.objects.scheduled()的方法链。是吗?是的,我希望像Model.objects.scheduled()这样的方法链。是这样吗?