目次
はじめに
DjangoのORMは、Pythonのコードを使ってデータベース操作を簡単にする強力なツールです。特に、save()
メソッドはデータベースにオブジェクトを保存する際に欠かせない機能です。この記事では、save()
メソッドの基本から応用まで、様々なシナリオでの使用例を紹介します。
基本的な使用方法
新しいオブジェクトの作成と保存
from myapp.models import MyModel
# 新しいオブジェクトを作成
my_object = MyModel(field1='value1', field2='value2')
# データベースに保存
my_object.save()
既存のオブジェクトの更新
# 既存のオブジェクトを取得
my_object = MyModel.objects.get(id=1)
# フィールドの値を変更
my_object.field1 = 'new_value'
# 変更をデータベースに保存
my_object.save()
応用的な使用方法
特定のフィールドだけを保存
my_object = MyModel.objects.get(id=1)
my_object.field1 = 'new_value'
# field1のみをデータベースに保存
my_object.save(update_fields=['field1'])
save() メソッドのオーバーライド
class MyModel(models.Model):
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
def save(self, *args, **kwargs):
# カスタムロジック
# 例: field2を自動的に更新
self.field2 = 'updated_value'
super().save(*args, **kwargs)
特殊なケースでの使用
モデルのsave()メソッドを使用せずにデータベースに直接保存
from django.db import transaction
with transaction.atomic():
MyModel.objects.create(field1='value1', field2='value2')
モデルのsave()メソッドを使わずに既存のオブジェクトを更新
MyModel.objects.filter(id=1).update(field1='new_value')