带外键的Django deepcopy对象

时间:2017-06-05 16:35:49

标签: python django postgresql

Django中class A的某个对象的通常副本如下所示:

obj = A.objects.get(...) # get the object
obj.id = None
obj.save()

但是,如果class A的外键有些class B,那么副本将引用与初始对象相同的对象,这有时会破坏约束。

如何使django以递归方式复制所有引用的对象?

我想它看起来像这样:

def duplicate(obj):
   obj.id = None
   obj.save()
   refs = ? # somehow get the inner objects which are foreign keys       
   for inner_obj in refs:
      duplucate(inner_obj)

obj = A.objects.get(...) # get the object
duplicate(obj)

0 个答案:

没有答案