美文网首页
django-reversion的使用

django-reversion的使用

作者: DjangoUnchained | 来源:发表于2020-04-09 16:55 被阅读0次
    1. 介绍

    django-reversion是为django提供历史版本管理的第三方库。

    • 可以管理具体的一个实例对象的修改历史(具体的一条数据库表记录)
    • 可以管理数据库model对应的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('创建时间', 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
    
    # 执行结果
    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. 恢复历史记录
    from reversion.models import Version
    
    # version_id为上一步查询出的历史记录的id
    reversion = Version.objects.filter(id=version_id)
    reversion[0].revision.revert()
    
    最后
    • 所有所需的配置都已经完成了,之后对注册过的model对象进行修改时就会在reversion_version表中生成对应记录
    • 之后如何展现历史记录就靠自己发挥啦

    相关文章

      网友评论

          本文标题:django-reversion的使用

          本文链接:https://www.haomeiwen.com/subject/oencmhtx.html