如何将django恢复添加到使用django和django rest框架开发的应用程序中

如何将django恢复添加到使用django和django rest框架开发的应用程序中,django,django-rest-framework,django-reversion,Django,Django Rest Framework,Django Reversion,我有一个使用Django和Django Rest框架开发的应用程序。我想将django恢复功能添加到我的应用程序中 我已经尝试过了,但我无法对我的应用程序进行特定更改 下面是应用程序的模块,我想在其中包括Django恢复,以便在对象被删除时恢复它们。如何为以下模块设置django恢复配置 admin.py:- from django.contrib import admin from.models import Category admin.site.register(Category) m

我有一个使用Django和Django Rest框架开发的应用程序。我想将django恢复功能添加到我的应用程序中

我已经尝试过了,但我无法对我的应用程序进行特定更改

下面是应用程序的模块,我想在其中包括Django恢复,以便在对象被删除时恢复它们。如何为以下模块设置django恢复配置

admin.py:-

from django.contrib import admin
from.models import Category

admin.site.register(Category)
models.py:-

  from django.db import models
  class Category(models.Model):
     name = models.CharField(max_length=64, unique=True)

     def __unicode__(self):
         return self.name
        from rest_framework import serializers
        from .models import Category

        class CategorySerializer(serializers.ModelSerializer):
              courses = serializers.HyperlinkedRelatedField(
                  many=True
                  read_only=True
                  view_name='course-detail'
               )
               class Meta:
                     model = Category
                     fields = ('pk', 'name', 'courses',)
            from django.conf.urls import patterns, url
            from rest_framework.urlpatterns import format_suffix_patterns
            from .import views
            from django.conf.urls import include

            category_list = views.CategoryViewSet.as_view({
                'get': 'list',
                'post': 'create'
            })

            category_detail = views.CategoryViewSet.as_view({
                'get': 'retrieve',
                'put': 'update',
                'patch': 'partial_update',
                'delete': 'destroy',
           })

           urlpatterns = format_suffix_patterns([

                url(r'^categories/$',
                    category_list,
                    name='category-list'),
                url(r'^categories/(?P<pk>[0-9]+)/$',
                    category_detail,
                    name='category-detail'),
           ])

           urlpatterns += [
               url(r'^api-auth/', include('rest_framework.urls',
                                          namespace='rest_framework')),
           ]
from rest_framework import permissions
from rest_framework import viewsets
from .models import Category
from .serializers import CategorySerializer

class CategoryViewSet(viewsets.ModelViewSet):
 queryset = Category.objects.all()
 serializer_class = CategorySerializer
 permission_classes = (permissions.IsAuthenticatedorReadOnly,)
序列化程序.py:-

  from django.db import models
  class Category(models.Model):
     name = models.CharField(max_length=64, unique=True)

     def __unicode__(self):
         return self.name
        from rest_framework import serializers
        from .models import Category

        class CategorySerializer(serializers.ModelSerializer):
              courses = serializers.HyperlinkedRelatedField(
                  many=True
                  read_only=True
                  view_name='course-detail'
               )
               class Meta:
                     model = Category
                     fields = ('pk', 'name', 'courses',)
            from django.conf.urls import patterns, url
            from rest_framework.urlpatterns import format_suffix_patterns
            from .import views
            from django.conf.urls import include

            category_list = views.CategoryViewSet.as_view({
                'get': 'list',
                'post': 'create'
            })

            category_detail = views.CategoryViewSet.as_view({
                'get': 'retrieve',
                'put': 'update',
                'patch': 'partial_update',
                'delete': 'destroy',
           })

           urlpatterns = format_suffix_patterns([

                url(r'^categories/$',
                    category_list,
                    name='category-list'),
                url(r'^categories/(?P<pk>[0-9]+)/$',
                    category_detail,
                    name='category-detail'),
           ])

           urlpatterns += [
               url(r'^api-auth/', include('rest_framework.urls',
                                          namespace='rest_framework')),
           ]
from rest_framework import permissions
from rest_framework import viewsets
from .models import Category
from .serializers import CategorySerializer

class CategoryViewSet(viewsets.ModelViewSet):
 queryset = Category.objects.all()
 serializer_class = CategorySerializer
 permission_classes = (permissions.IsAuthenticatedorReadOnly,)
url.py:-

  from django.db import models
  class Category(models.Model):
     name = models.CharField(max_length=64, unique=True)

     def __unicode__(self):
         return self.name
        from rest_framework import serializers
        from .models import Category

        class CategorySerializer(serializers.ModelSerializer):
              courses = serializers.HyperlinkedRelatedField(
                  many=True
                  read_only=True
                  view_name='course-detail'
               )
               class Meta:
                     model = Category
                     fields = ('pk', 'name', 'courses',)
            from django.conf.urls import patterns, url
            from rest_framework.urlpatterns import format_suffix_patterns
            from .import views
            from django.conf.urls import include

            category_list = views.CategoryViewSet.as_view({
                'get': 'list',
                'post': 'create'
            })

            category_detail = views.CategoryViewSet.as_view({
                'get': 'retrieve',
                'put': 'update',
                'patch': 'partial_update',
                'delete': 'destroy',
           })

           urlpatterns = format_suffix_patterns([

                url(r'^categories/$',
                    category_list,
                    name='category-list'),
                url(r'^categories/(?P<pk>[0-9]+)/$',
                    category_detail,
                    name='category-detail'),
           ])

           urlpatterns += [
               url(r'^api-auth/', include('rest_framework.urls',
                                          namespace='rest_framework')),
           ]
from rest_framework import permissions
from rest_framework import viewsets
from .models import Category
from .serializers import CategorySerializer

class CategoryViewSet(viewsets.ModelViewSet):
 queryset = Category.objects.all()
 serializer_class = CategorySerializer
 permission_classes = (permissions.IsAuthenticatedorReadOnly,)
。这将自动将每个请求包装在修订中,确保对模型的所有更改都将添加到其版本历史记录中

要启用修订版中间件,只需将其添加到
中间件\u类
设置中,如下所示:


任何更复杂的事情都需要通过您的代码添加API调用,以您决定的方式包装特定的
save
调用。

admin.py

from django.contrib import admin
from.models import Category
import reversion

class BaseReversionAdmin(reversion.VersionAdmin):
 pass

admin.site.register(Category, BaseReversionAdmin)
还添加了对已安装的应用程序和middlewareclasses的恢复


最后,我可以看到“恢复已删除的对象”按钮。

Ya我确实添加了中间件类,我更喜欢使用django reversion文档对上述模块进行管理和低级API集成。顺便说一句,我昨天能够继续进行管理集成,但我的问题是管理集成和低级API集成之间有什么区别?至少我能够在后端管理中看到django恢复功能:我想知道“如何查询”和“如何填充历史页面”很好!!谢谢你节省了很多时间!!