如何添加django-reversion到使用django和django-rest框架开发的应用程序 [英] How to add django-reversion to an app developed using django and django-rest framework
问题描述
我已经尝试过 http://django-reversion.readthedocs.org/en/latest/api.html#low-level-api ,但我未能对我的应用进行具体更改。
以下是应用程序的模块,我想将Django-reversion包含在还原对象(如果被删除)中。如何设置以下模块的django-reversion配置
admin.py: -
from django.contrib import admin
from.models import类别
admin.site.register(类别)
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
.py: -
from rest_framework import serializers
from .models import类别
class CategorySerializer(serializers.ModelSerializer):
courses = serializers.HyperlinkedRelatedField(
many = True
read_only = True
view_name ='course-detail'
)
class Meta:
model =类别
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_patter ns([
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类别
来自.serializers import CategorySerializer
class CategoryViewSet (viewsets.ModelViewSet):
queryset = Category.objects.all()
serializer_class = CategorySerializer
permission_classes =(permissions.IsAuthenticatedor ReadOnly,)
< a href =http://django-reversion.readthedocs.org/en/latest/api.html#revisionmiddleware =nofollow>创建修订版的最简单的方法是使用reversion.middleware.RevisionMiddleware 。这将自动将每个请求包装在修订版本中,确保您的模型的所有更改都将添加到其版本历史记录中。
要启用修订中间件,只需将其添加到您的
MIDDLEWARE_CLASSES
设置如下:
MIDDLEWARE_CLASSES =(
'reversion.middleware.RevisionMiddleware',
#其他中间件在这里...
)
任何更复杂的事情都需要通过您的代码添加API调用,包含特定保存
调用的方式, em>你决定。
I have an app developed using Django and Django Rest framework. I would like to add the django-reversion feature to my app.
I have already tried http://django-reversion.readthedocs.org/en/latest/api.html#low-level-api but I have failed to make specific changes to my app.
Below are the modules of the app where I would like to include the Django-reversion to restore objects if they get deleted. How to set the django-reversion configuration for the below modules
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
serializers.py:-
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,)
The simplest way to create revisions is to use reversion.middleware.RevisionMiddleware. This will automatically wrap every request in a revision, ensuring that all changes to your models will be added to their version history.
To enable the revision middleware, simply add it to your
MIDDLEWARE_CLASSES
setting as follows:
MIDDLEWARE_CLASSES = (
'reversion.middleware.RevisionMiddleware',
# Other middleware goes here...
)
Any thing more complex with this will require adding API calls through your code in away that wraps specific save
calls in ways that you decide.
这篇关于如何添加django-reversion到使用django和django-rest框架开发的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!