django-reversion的使用

1. 介紹

django-reversion是為django提供歷史版本管理的第三方庫。

  • 可以管理具體的一個實例對象的修改歷史(具體的一條數(shù)據(jù)庫表記錄)
  • 可以管理數(shù)據(jù)庫model對應(yīng)的table的刪除歷史(一張表里被刪除的記錄)
2. 我的django依賴
Django == 2.2.11
django-reversion >=3.0.5
djangorestframework== 3.10.3
3. model注冊舉例
import reversion

@reversion.register()
class BaseTable(models.Model):
    """
    """

    class Meta:
        abstract = True
        verbose_name = "公共字段表"
        db_table = 'BaseTable'

    create_time = models.DateTimeField('創(chuàng)建時間', auto_now_add=True)
    update_time = models.DateTimeField('更新時間', auto_now=True)
4. View舉例
from reversion.views import RevisionMixin
from rest_framework.viewsets import ModelViewSet

class APIView(RevisionMixin, ModelViewSet):
    def list(self, request, *args, **kwargs):
        pass
    def create(self, request, *args, **kwargs):
        pass
    def update(self, request, *args, **kwargs):
        pass
    def destroy(self, request, *args, **kwargs):
        pass
5. model初始化
# 命令
python manage.py createinitialrevisions
# 執(zhí)行結(jié)果
Creating revisions for 接口信息
- Created 148 / 148
6. 查詢具體對象或者model中刪除的歷史記錄
from django.shortcuts import get_object_or_404
from reversion.models import Version

# version_obj_id指某一個具體對象的id,model為要查詢的table
instance = get_object_or_404(model, id=version_obj_id)
queryset = Version.objects.get_for_object(instance)

# 查詢model中刪除歷史
queryset = Version.objects.get_deleted(model)
7. 恢復(fù)歷史記錄
from reversion.models import Version

# version_id為上一步查詢出的歷史記錄的id
reversion = Version.objects.filter(id=version_id)
reversion[0].revision.revert()
最后
  • 所有所需的配置都已經(jīng)完成了,之后對注冊過的model對象進行修改時就會在reversion_version表中生成對應(yīng)記錄
  • 之后如何展現(xiàn)歷史記錄就靠自己發(fā)揮啦
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容