Django ORMのSaveメソッドの使い方を具体例付きで解説!

はじめに

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')
タイトルとURLをコピーしました