Django查询优化:可以在组中检索值吗?

2024-04-25 11:36:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有:

active = Node.objects.filter(status = 'a')
potential = Node.objects.filter(status = 'p')
hotspot = Node.objects.filter(status = 'h')

我在想:有没有可能用更好的方式来做?在

编辑:也许我没有很好地解释自己。我需要3个不同状态的列表。如果我只做一个查询,那么我将不得不在列表中循环生成3个新列表,但是如果列表很长,这不是效率低下吗?在


Tags: node编辑列表objects状态status方式filter
2条回答

更好的方法是使用in

Node.objects.filter(status__in=['a', 'p', 'h'])

评论后编辑不知道为什么这样做效率低下。也许一个改进是添加.order_by('status'),这样就得到了一个有序的查询集,然后在迭代时进行拆分。可能是一个微观优化。在

看看djangoq对象

from django.db.models import Q;

Node.objects.filter(Q(status = 'a') | Q(status = 'p' | Q(status = 'h'))

资料来源: https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

相关问题 更多 >

    热门问题