Djangoのupdate_or_createでdefaultsの使い方
今回はDjangoのupdate_or_createでdefaultsの使い方についてご紹介いたします。
Djangoのupdate_or_createでdefaultsの使い方
例として、次のBookモデルがあるとします。
1 2 3 4 |
class Book(models.Model): title = models.CharField(max_length=120) author = models.CharField(max_length=120) price = models.DecimalField(decimal_places=2, max_digits=100, null=True) |
このBookモデルで、titleとauthorが一致する場合はpriceをupdate、titleとauthorが一致しない場合は新たにデータをinsertするロジックを考えたとします。
そんな時は、次のような記述が可能です。
1 2 3 4 |
book = Book.objects.update_or_create( title='title1', author='author1', defaults={'price': '100'}, ) |
ちなみに、一つ目の返り値はinsertかupdateしたmodelが返りますが、二つ目の返り値としてBooleanの値を取得することが可能です。
例えば、次のように書けばデータをinsertした場合はcreatedがTrue、データをupdateした場合はcreatedがFalseで返ってきます。
1 2 3 4 |
book, created = Book.objects.update_or_create( title='title1', author='author1', defaults={'price': '100'}, ) |
終わりに
今回はDjangoのupdate_or_createでdefaultsの使い方についてご紹介いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません