django-rest-framework - 如何向使用 Django 和 Django rest框架开发的应用程序添加 Django 恢复

  显示原文与译文双语对照的内容
150 0

我有一个使用 Django 和 Django Rest框架开发的应用程序。我想在我的应用程序中添加django降级功能。

我已经经尝试了 http://django-reversion.readthedocs.org/en/latest/api.html#low-level-api,但是我未能对应用程序进行特定的更改。

下面是应用程序的模块,我想要包括django恢复对象,如果它们被删除。如何为 below 模块设置django反转配置

管理:-

from django.contrib import admin
from.models import Category
admin.site.register(Category)

模型:-

 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',)

urls.py: -

 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')),
 ]

views.py: -

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,)
时间:原作者:0个回答

140 4

创建修改的最简单方法是使用 reversion.middleware.RevisionMiddleware 。这会自动将每个请求包装在一个修订中,确保对模型的所有更改都将被添加到。

要启用修订中间件,只需将它的添加到你的MIDDLEWARE_CLASSES 设置中,如下所示:

MIDDLEWARE_CLASSES = (
 'reversion.middleware.RevisionMiddleware',
 # Other middleware goes here...
)

如果有更复杂的事情,就需要在代码中添加API调用,这样就可以按照你所决定的方式来包装特定的。

原作者:
...