【Django】django-reversionでモデルデータの変更履歴追跡と削除データの復元を実装する方法
はじめに
この記事では、Djangoアプリケーションに「オブジェクトのデータ追跡」機能と「削除されたデータの復元」機能を追加する方法を解説します。
リバージョン(Reversion)とは、削除してしまったモデルデータを元に戻す仕組みのことです。django-reversionを利用すれば、ワンクリックですべての削除済みデータを復元できるだけでなく、各モデルオブジェクトの変更履歴(バージョン)も自動的に記録・追跡できます。
事前準備:プロジェクトのセットアップ
まず、Djangoプロジェクトとアプリを作成し、settings.py の INSTALLED_APPS に作成したアプリを追加しておきましょう。
続いて urls.py を設定し、django-reversion モジュールをインストールします。
pip install django-reversion
settings.py に以下の行を追加してください。
INSTALLED_APPS = [
'reversion',
]
実装例
今回の主題であるリバージョンの実装には views.py や urls.py の詳細は関係しないため、ここでは割愛します。
models.py の作成
models.py に以下のコードを追加します。
from django.db import models
# Create your models here.
class Data(models.Model):
Name = models.CharField(max_length=100)
salary = models.CharField(max_length=20)
ここでは、リバージョンを適用する対象となるシンプルなDjangoモデル「Data」を作成しました。
admin.py への登録
次に admin.py を以下のように編集します。
from django.contrib import admin
from .models import Data
from reversion.admin import VersionAdmin
@admin.register(Data)
class ClientModelAdmin(VersionAdmin):
pass
ここでは、Data モデルに対してリバージョン対応の管理クラスを登録しています。VersionAdmin を継承することで、Django管理画面から各オブジェクトのバージョン履歴の閲覧や、過去の状態への復元が可能になります。
マイグレーションの実行
ターミナルで以下のコマンドを順番に実行しましょう。
python manage.py createinitialrevisions python manage.py makemigrations python manage.py migrate
これにより、既存データの初期リビジョンが作成され、続いてマイグレーションファイルの生成とデータベースへの反映が行われます。
※なお、django-reversionの比較的新しいバージョンでは createinitialrevisions コマンドは廃止されており、初回の migrate 実行時にリビジョンが自動的に作成されます。お使いのバージョンに応じてコマンドを使い分けてください。
動作確認
ブラウザで https://127.0.0.1/admin にアクセスし、Dataモデルの管理画面を開きます。オブジェクトごとの変更履歴が表示され、誤って削除したデータも簡単に復元できるようになっているはずです。


-
Django REST FrameworkでJWT認証を実装する方法をわかりやすく解説
Django REST Framework(DRF)を使った開発経験がある方なら、JWT認証という言葉を一度は耳にしたことがあるでしょう。JWTは「JSON Web Token」の略称で、トークンベースの認証を実現する仕組みです。Djangoにおける認証方式として非常に人気が高く、APIのセキュリティ確保に広く活用されています。この記事では、Django REST FrameworkでJWT認証を導入し、実際に動かすまでの手順をステップごとに解説します。JWT認証とはJWT認証は、ユーザー名とパスワードを使ってトークンを発行し、以降のリクエストではそのトークンを送信することで認証を行う方式です
-
DjangoモデルにJSONフィールドを追加する方法【django-jsonfield活用ガイド】
この記事では、DjangoのモデルにJSONフィールドを追加する方法を解説します。JSONはキーと値のペアでデータを保存できるシンプルなフォーマットで、波括弧({})で記述されます。開発者向けサイトなどでは、柔軟な構造のデータを扱う場面が多く、そうしたケースでJSONフィールドは非常に役立ちます。事前準備まず、Djangoプロジェクトとアプリを作成しましょう。アプリをINSTALLED_APPSに追加し、URLの設定を行い、基本的なモデルを作成してHTMLファイル上にフォームを表示できるようにしておいてください。django-jsonfieldパッケージのインストール以下のコマンドでdjang