Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Django】django-reversionでモデルデータの変更履歴追跡と削除データの復元を実装する方法

はじめに

この記事では、Djangoアプリケーションに「オブジェクトのデータ追跡」機能と「削除されたデータの復元」機能を追加する方法を解説します。

リバージョン(Reversion)とは、削除してしまったモデルデータを元に戻す仕組みのことです。django-reversionを利用すれば、ワンクリックですべての削除済みデータを復元できるだけでなく、各モデルオブジェクトの変更履歴(バージョン)も自動的に記録・追跡できます。

事前準備:プロジェクトのセットアップ

まず、Djangoプロジェクトとアプリを作成し、settings.pyINSTALLED_APPS に作成したアプリを追加しておきましょう。

続いて urls.py を設定し、django-reversion モジュールをインストールします。

pip install django-reversion

settings.py に以下の行を追加してください。

INSTALLED_APPS = [
    'reversion',
]

実装例

今回の主題であるリバージョンの実装には views.pyurls.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】django-reversionでモデルデータの変更履歴追跡と削除データの復元を実装する方法【Django】django-reversionでモデルデータの変更履歴追跡と削除データの復元を実装する方法

  1. Django REST FrameworkでJWT認証を実装する方法をわかりやすく解説

    Django REST Framework(DRF)を使った開発経験がある方なら、JWT認証という言葉を一度は耳にしたことがあるでしょう。JWTは「JSON Web Token」の略称で、トークンベースの認証を実現する仕組みです。Djangoにおける認証方式として非常に人気が高く、APIのセキュリティ確保に広く活用されています。この記事では、Django REST FrameworkでJWT認証を導入し、実際に動かすまでの手順をステップごとに解説します。JWT認証とはJWT認証は、ユーザー名とパスワードを使ってトークンを発行し、以降のリクエストではそのトークンを送信することで認証を行う方式です

  2. DjangoモデルにJSONフィールドを追加する方法【django-jsonfield活用ガイド】

    この記事では、DjangoのモデルにJSONフィールドを追加する方法を解説します。JSONはキーと値のペアでデータを保存できるシンプルなフォーマットで、波括弧({})で記述されます。開発者向けサイトなどでは、柔軟な構造のデータを扱う場面が多く、そうしたケースでJSONフィールドは非常に役立ちます。事前準備まず、Djangoプロジェクトとアプリを作成しましょう。アプリをINSTALLED_APPSに追加し、URLの設定を行い、基本的なモデルを作成してHTMLファイル上にフォームを表示できるようにしておいてください。django-jsonfieldパッケージのインストール以下のコマンドでdjang