BillBie

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

【转载】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

参考

posted on   BillBie  阅读(73)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示