首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRY Django querysets

DRY Django querysets
EN

Stack Overflow用户
提问于 2016-06-06 14:04:16
回答 1查看 212关注 0票数 1

我有一个查询,在数据库中的多个聚合字段上使用order_by,如下所示:

代码语言:javascript
复制
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中重用这个的最好方法是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 14:09:58

您可以向模型类中添加一个管理器,以将其作为基本筛选器。例如:

代码语言:javascript
复制
class MyListManager(models.Manager):
    def select_diff(self):
        return self.get_queryset().extra(...)


class MyList(models.Model):
    objects = MyListManager()

有了这个,您可以简单地做:

代码语言:javascript
复制
MyList.objects.select_diff().filter(...)

您可以找到更多关于经理这里的信息。

与将queryset写在某个地方相比,这样做的一个最大优点是,您仍然可以使用附加的过滤器/参数链接查询集,并且符合django标准。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37659545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档