【转载】django 复制一条model 对象
转载自:https://mozillazg.com/2013/02/django-copy-or-clone-a-query-result-and-insert-it-into-database.html
复制/克隆一条查询结果,并将它插入到数据库中:
将 pk 值设为 None 即可:
blog = Blog(name='My blog', tagline='Blogging is easy') blog.save() # post.pk == 1 blog.pk = None blog.save() # post.pk == 2
如果该 model 继承于另一个 model 的话,必须将 pk
和 id
的值都设为 None:
class ThemeBlog(Blog): theme = models.CharField(max_length=200) django_blog = ThemeBlog(name='Django', tagline='Django is easy', theme='python') django_blog.save() # django_blog.pk == 3 django_blog.pk = None django_blog.id = None django_blog.save() # django_blog.pk == 4
需要注意都是:这种方法不会复制相关对象。如果想复制相关(类似多对对的)对象的话,需要先将相关对象取出来然后在保存到新的对象中。例如,Entry
与 Author
是多对多关系:
entry = Entry.objects.all()[0] # some previous entry old_authors = entry.authors.all() entry.pk = None entry.save() entry.authors = old_authors # saves new many2many relations
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」