gpt4 book ai didi

post_save 信号中的 Python 深度复制?

转载 作者:太空宇宙 更新时间:2023-11-03 19:23:08 27 4
gpt4 key购买 nike

以下代码位于 Django 信号中,当副本数为“2”时,以下代码创建 80 多个副本,然后崩溃......出了什么问题?

def internal_signal(sender, instance, signal, created, *args, **kwargs):
for i in range(instance.number_of_copies):
item_copy = deepcopy(instance)
item_copy.id = item_copy.id + 1
item_copy.internal_barcode = "%s"%(item_copy.item_location.location_code)
item_copy.save()

post_save.connect(internal_signal, sender=Inventory)

谢谢。

编辑:呃!发现问题了,上面的代码是Django信号的post_save操作的一部分,所以每次“保存”都会触发另一个循环,然后堆崩溃。

以编程方式创建“n”个对象并将其保存在 Django 中的最佳方法是什么?

最佳答案

这是我的测试代码,它的性能符合预期。我认为你应该进行单元测试来找出问题所在。别管 Django 了!

class T:
def save(this):
pass
from copy import deepcopy
from copy import copy
instance = T()
instance.number_of_copies = 2
instance.id = 1
instance.item_location=T()
instance.item_location.location_code = 2
for i in range(instance.number_of_copies):
item_copy = deepcopy(instance)
item_copy.id = item_copy.id + 1
item_copy.internal_barcode = "%s"%(item_copy.item_location.location_code)
item_copy.save()
print " id,code:",item_copy.id,item_copy.internal_barcode

关于post_save 信号中的 Python 深度复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9109297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com