1
以下代码位于Django信号中,当拷贝数为'2'时,以下代码创建80多个拷贝,然后崩溃......出了什么问题?python deepcopy在post_save信号?
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操作的一部分,所以每个'save'都会触发另一个循环,然后堆崩溃。
创建'n'对象并以编程方式将其保存在Django中的最佳方法是什么?
感谢您的回答。问题是这个'deepcopy'被放置在post_save信号中,并且克隆对象的每次保存都会导致递归。所以我简单地在克隆前断开信号并在操作后连接信号,一切正常。 – lud0h 2012-02-02 11:11:23