django回归的历史比较
django-reversion-compare的Python项目详细描述
安装
只需使用:
pip install django-reversion-compare
您可以选择安装 google diff match patch ,否则将使用difflib。最简单的方法是使用非官方的包 diff-match-patch ,例如:
pip install diff-match-patch
设置
在"设置"中添加"反向比较"到"已安装的应用程序"。py,例如:
INSTALLED_APPS = ( 'django...', ... 'reversion', # https://github.com/etianen/django-reversion 'reversion_compare', # https://github.com/jedie/django-reversion-compare ... ) # Add reversion models to admin interface: ADD_REVERSION_ADMIN=True
用法
从 CompareVersionAdmin而不是从 versionAdmin继承以获取比较功能。
管理py例如:
from django.contrib import admin from reversion_compare.admin import CompareVersionAdmin from my_app.models import ExampleModel class ExampleModelAdmin(CompareVersionAdmin): pass admin.site.register(ExampleModel, ExampleModelAdmin)
如果您使用的是现有的第三方应用程序,那么您可以将补丁django reversion compare添加到 它的管理类使用 reversion_compare.helpers.patch_admin() 方法。例如,添加 内置用户模型的版本控制:
from reversion_compare.helpers import patch_admin patch_admin(User)
例如:添加django cms页面模型:
from cms.models.pagemodel import Page from reversion_compare.helpers import patch_admin # Patch django-cms Page Model to add reversion-compare functionality: patch_admin(Page)
自定义
可以更改每个字段或整个字段类型的外观。 您只能使用此名称方案为管理类定义一个方法:
- "比较字段名"
- "比较字段。获取内部类型"
如果没有此名称方案的方法,则将使用回退比较方法。
按名称为模型字段指定比较方法的示例:
class YourAdmin(CompareVersionAdmin): def compare_foo_bar(self, obj_compare): """ compare the foo_bar model field """ return "%r <-> %r" % (obj_compare.value1, obj_compare.value2)
并举例使用带有自定义版本管理类:
patch_admin(User, AdminClass=YourAdmin)