2024-04-25 11:36:27 发布
网友
我有:
active = Node.objects.filter(status = 'a') potential = Node.objects.filter(status = 'p') hotspot = Node.objects.filter(status = 'h')
我在想:有没有可能用更好的方式来做?在
编辑:也许我没有很好地解释自己。我需要3个不同状态的列表。如果我只做一个查询,那么我将不得不在列表中循环生成3个新列表,但是如果列表很长,这不是效率低下吗?在
更好的方法是使用in:
in
Node.objects.filter(status__in=['a', 'p', 'h'])
评论后编辑不知道为什么这样做效率低下。也许一个改进是添加.order_by('status'),这样就得到了一个有序的查询集,然后在迭代时进行拆分。可能是一个微观优化。在
.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
更好的方法是使用
in
:评论后编辑不知道为什么这样做效率低下。也许一个改进是添加
.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
相关问题 更多 >
编程相关推荐