MawaLog

一日一日、楽しく生きる。技術と音楽が好き。

Djangoでフォームを介さずにインスタンスを複製する方法

Django

Django

どんなにときにつかえるか

例えばブログ機能アプリで、以前つくった記事を複製して再利用するときに利用できます。

フォームインスタンスをつくって、そこに生成したインスタンスを入れ込むForm(~~~, instance=instance)、そしてセーブすると、単に呼び出したインスタンスがアップデートされるだけ。

これで本文などのフィールドの値が同じで新しいPKのインスタンスが複製されるのです。便利^^v

blog = Blog(name='My blog', tagline='Blogging is easy')
blog.save() # blog.pk == 1

blog.pk = None
blog.save() # blog.pk == 2

↑下記公式ドキュメントより引用↑

.pk = Noneとするだけ^^

参考

stackoverflow.com

Making queries | Django documentation | Django