Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django查询优化:是否可以在组中检索值?_Python_Django_Django Queryset_Django Orm - Fatal编程技术网

Python Django查询优化:是否可以在组中检索值?

Python Django查询优化:是否可以在组中检索值?,python,django,django-queryset,django-orm,Python,Django,Django Queryset,Django Orm,我有: 我在想:有没有可能用一种更好的方式 编辑:也许我没有很好地解释我自己。我需要有3个不同状态的列表。如果我只执行一个查询,那么我将不得不在列表上循环生成三个新列表,但是如果列表很长,那不是效率低下吗?看看Django Q对象 从django.db.models导入Q Node.objects.filter(Q(状态='a')| Q(状态='p'| Q(状态='h')) 资料来源: 看看Django Q对象 从django.db.models导入Q; Node.objects.filte

我有:

我在想:有没有可能用一种更好的方式


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

看看Django Q对象


从django.db.models导入Q

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

资料来源:

看看Django Q对象


从django.db.models导入Q;

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

资料来源:

更好的是,在
中使用

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

评论后编辑不知道为什么效率会很低。也许一个改进是添加
。order\u by('status')
,这样您可以得到一个有序的查询集,然后在迭代时进行拆分。这可能是一个微优化。

更好的是,在
中使用

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

评论后编辑不知道为什么这样做效率低下。也许一个改进是添加
。order\u by('status')
所以你得到一个有序的查询集,然后在迭代时分割。这可能是一个微观优化。

也许我没有很好地解释我自己。我需要有3个具有3种不同状态的列表。如果我只执行1个查询,那么我将不得不循环列表以生成3个新列表,但如果列表很长,那不是没有效率的客户端?也许我没有很好地解释我自己。我需要有3个具有3种不同状态的列表。如果我只进行1次查询,那么我将不得不循环列表以生成3个新列表,但是如果列表很长,这不是效率低下吗?