我有一个查询,在数据库中的多个聚合字段上使用order_by,如下所示:
list = MyList.objects.filter(key_item=None).extra(
select={"diff":"abs(field1+field2+field3+field4+field5+field6+field7+field8+field9+field10)"}).order_by('-diff')我正在使用这是我的代码中的几个地方,我宁愿把它放在一些集中的地方。
我想知道django中重用这个的最好方法是什么。
发布于 2016-06-06 14:09:58
您可以向模型类中添加一个管理器,以将其作为基本筛选器。例如:
class MyListManager(models.Manager):
def select_diff(self):
return self.get_queryset().extra(...)
class MyList(models.Model):
objects = MyListManager()有了这个,您可以简单地做:
MyList.objects.select_diff().filter(...)您可以找到更多关于经理这里的信息。
与将queryset写在某个地方相比,这样做的一个最大优点是,您仍然可以使用附加的过滤器/参数链接查询集,并且符合django标准。
https://stackoverflow.com/questions/37659545
复制相似问题