Django - 如何在不对源对象应用克隆更改的情况下克隆对象

Edg*_*yan 4 python django

最好用例子来描述:

看法:

def my_view(request):
    obj_old = Inventories.objects.get(id = source_id)
    obj_new = obj_old 
    obj_old.some_field = 0
    obj_old.save()

    obj_new.some_field = 1
    obj_new.id = None
    obj_new.save()
Run Code Online (Sandbox Code Playgroud)

问题是,我做出obj_new的变化也适用于obj_old使的值some_field是1两obj_oldobj_new。任何想法如何解决这一问题 ?

raf*_*elc 5

你应该复制你的对象,而不是让它们相等。

要进行复制,您可以使用复制模块

import copy

obj_new = copy.deepcopy(obj_old)
Run Code Online (Sandbox Code Playgroud)