gpt4 book ai didi

python - DRY Django 查询集

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:08 25 4
gpt4 key购买 nike

我有一个查询,其中用户对数据库中的许多聚合字段进行 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 中重用它的最佳方法。

最佳答案

您可以将管理器添加到您的模型类中,以将其作为基本过滤器包含在内。例如:

class MyListManager(models.Manager):
def select_diff(self):
return self.get_queryset().extra(...)


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

有了这个你可以简单地做:

MyList.objects.select_diff().filter(...)

您可以找到有关经理的更多信息 here

与将查询集写在某处相比,这样做的一大优势是您仍然可以将查询集与其他过滤器/参数链接起来,并且您符合 django 标准

关于python - DRY Django 查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com