【轉載】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

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章