概要(忙しい人はここだけ読んで公式docを参照してください)
- 目的
- update_or_create()(DBに存在しなければ新規作成、存在すれば更新)の処理をより高速に行うため、bulk_update_or_create()的なことを実現したい。
- 課題
- Djangoではbulk_update_or_create()というメソッドは提供されていない。
- ネットで検索しても、自前で関数を用意する方法しか出てこない。
- 結論
- Django4.1以降であれば、bulk_create()のパラメータでupdate_conflicts=Trueを指定することで実現可能。
- unique_fieldsでunique constraintをかけるフィールドを指定(リスト)
- update_fieldsで更新する場合の対象フィールドを指定(リスト)
- https://docs.djangoproject.com/en/4.2/ref/models/querysets/#bulk-create
- Django4.1以降であれば、bulk_create()のパラメータでupdate_conflicts=Trueを指定することで実現可能。
やりたかったこと
(執筆中…)
実現方法
(執筆中…)