Django在100个物体后停下

2024-10-04 09:18:25 发布

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

我已经做了一个小的Django项目,我想将添加的对象相互比较以找到dublet(我已经使用了unique_together元选项,但这并不完全符合我的需要)。你知道吗

当我启动脚本时,它在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() )

谢谢你们!你知道吗


Tags: 项目对象djangoin脚本appforobjects
1条回答
网友
1楼 · 发布于 2024-10-04 09:18:25

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

相关问题 更多 >