Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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在100个对象之后停止_Python_Django - Fatal编程技术网

Python Django在100个对象之后停止

Python Django在100个对象之后停止,python,django,Python,Django,我做了一个小的Django项目,我想将添加的对象相互比较以找到Dublet(我已经将unique_Meta选项一起使用,但这并不完全符合我的需要) 当我启动脚本时,它在100次迭代后完成,尽管有大约60000个对象 objects = Django_app.objects.all() for object_a in objects: for object_b in objects: compare( object_a, object_b) 有人能解释这种行为吗 解决方

我做了一个小的Django项目,我想将添加的对象相互比较以找到Dublet(我已经将
unique_
Meta选项一起使用,但这并不完全符合我的需要)

当我启动脚本时,它在100次迭代后完成,尽管有大约60000个对象

objects = Django_app.objects.all()

for object_a in objects:
    for object_b in objects:
        compare( object_a, object_b)
有人能解释这种行为吗

解决方案:

objects = list( objects.all() )

谢谢大家

在列表上迭代时,Python使用指针遍历对象列表。在对同一对象(相同的项目列表)进行迭代时,Python会注意使用两个单独的指针。因此,当您执行
objects=list(objects)
时,将创建一个普通的Python对象列表。在
对象上嵌套迭代
的工作方式与预期相同。对于Django QuerySet,行为有些不同。查询集是从数据库中提取的,只有一个指针。将查询集强制放入常规列表是最简单的解决方法。

这就是全部代码吗?两个循环中的某个地方可能有故障请在进入for循环之前尝试评估查询集以列出(
objects=list(objects)
),并报告发生的情况。@Aswin否,但如果在没有循环中的所有内容的情况下对其进行测试,它仍然会在100@KrzysztofSzularz谢谢它现在通过对象。你能解释一下吗?这是因为如果调用objects.all(),则不存在真正的对象,并且第一个db连接是在调用f.e.object_a.id时进行的吗?
对象的迭代器
已耗尽。