1
다음 코드는 Django 신호에 있고 사본 수가 '2'이면 다음 코드는 80 개 이상의 복사본을 만든 다음 충돌합니다 ... 무엇이 잘못 되었습니까?post_save 신호에 파이썬 deepcopy가 있습니까?
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)
감사합니다.
편집 : Duh! 문제를 발견, 위의 코드는 장고 신호의 post_save 작업의 일부이므로 모든 '저장'이 다른 루프를 트리거 한 다음 충돌을 힙니다.
'n'개 개체를 만들고 장고에서 프로그래밍 방식으로 저장하는 가장 좋은 방법은 무엇입니까?
답변 해 주셔서 감사합니다. 문제는이 'deepcopy'가 post_save 신호에 배치되었고 복제 객체의 모든 저장이 재귀가 발생했기 때문입니다. 그래서 간단히 복제 전 신호를 'disconnect'd하고 작동 후 신호를'connect'd하면 모든 것이 잘 작동합니다. – lud0h