django快速复制(克隆)一条查询结果的方法

最近的Django项目中有复制记录的需求,就是记录定时巡检表,在主任务下面,到时间就增加一条子任务,任务内容相同,就是主键id要改变。
我的方法如下:

def set_sub_inspect_task(taskid, start_time):
    task = inspect_model.InspectTask.objects.get(id=taskid)
    task.id = None
    task.start_time = start_time
    task.parent_task = taskid
    task.sub_task = 1
    task.save()
    return task.id

task.id = None后,对于一个要新加入数据库的model实例,在save()执行之前是无法知道它的id的,因为要算数据库中已有多少个本model才能算出它的id值。这样的话在这里task对象指向已经发生了变化,指向task.id = None,这样就相当于克隆了task = inspect_model.InspectTask.objects.get(id=taskid)这条查询结果,新增了一个id,而其它信息是一样的。
参考链接:
DJANGO复制记录的方法

猜你喜欢

转载自blog.csdn.net/qq_34663267/article/details/111557897