我有以下models.py
class Contact(models.Model):
pass
class Link(models.Model):
pass
class Relationship(models.Model):
# Documentation
__doc__ = _(u'Stores a relationship between 2 contacts.')
# Attributes
from_contact = models.ForeignKey(Contact, related_name='from_contacts', verbose_name=_(u'first contact'), help_text=_(u'The first contact implicated by the relationship.'))
link = models.ForeignKey(Link, related_name=u'relationships', verbose_name=_(u'relationship link'), help_text=_(u'The relationship link between both contacts.'))
to_contact = models.ForeignKey(Contact, related_name='to_contacts', verbose_name=_(u'second contact'), help_text=_(u'The second contact implicated by the relationship.'))
# Meta-data
class Meta:
verbose_name = u'Relationship'
verbose_name_plural = u'Relationships'
unique_together = ('from_contact', 'link', 'to_contact')
Run Code Online (Sandbox Code Playgroud)
使用Django的基于类的视图Revision Context Manager
,我可以随时创建修订版本,在2个联系人之间创建新的关系
# …
Run Code Online (Sandbox Code Playgroud) django-reversion是否适用于南迁?
django-reversion和南方兼容吗?
当前版本:
- 回归 - 1.2.1
- 南 - 0.7.1
django compatibility django-models django-south django-reversion
我做了初始安装步骤并创建了初始修订版,但是当我在django shell中保存模型时,没有创建新版本:
In [1]: s = Shop.objects.all()[0]
In [2]: import reversion
In [3]: s.name = 'a'
In [4]: s.save()
In [5]: s.name = 'b'
In [6]: s.save()
In [7]: reversion.get_for_object(s)
Out[7]: [<Version: <1> "X">]
Run Code Online (Sandbox Code Playgroud)
这是初始修订版.
从视图更新模型时,会成功创建修订.
我错过了什么?
models.py文件是:
...
class Shop(Model):
...
import reversion
reversion.register(Shop)
<EOF>
Run Code Online (Sandbox Code Playgroud)
我在post_save
接收器中看到了一种反转方法,虽然在我调试它时没有调用它.
我有Django v1.4.1,reversion v1.6.2.
我试图为相同的模型启用Django Reversion和Django-Import-Export ...不确定我的逻辑是否正确或者我是否应该使用多个admin.py文件等
我尝试了以下但是这只允许Django Reversion工作,如果我在Import Export Works周围切换它们.如果我可以同时启用它,那将是非常棒的.
class MyModelAdmin(reversion.VersionAdmin, ImportExportModelAdmin):
pass
Run Code Online (Sandbox Code Playgroud)
我看过两个项目的readthedocs,但我仍然输了.
http://django-reversion.readthedocs.org/en/latest/admin.html#admin https://django-import-export.readthedocs.org/en/latest/getting_started.html
干杯xc0m
我有一个使用Django和Django Rest框架开发的应用程序.我想将django-reversion功能添加到我的应用程序中.
我已经尝试过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 Category
admin.site.register(Category)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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',)
Run Code Online (Sandbox Code Playgroud)
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': …
Run Code Online (Sandbox Code Playgroud) 当我玩django-revisions时,我正在创建一些初始测试.我希望能够测试我的一些api和查看代码是否正确保存了修订版.但是,我甚至无法获得保存已删除版本的基本测试.
import reversion
from django.db import transaction
from django import test
from myapp import models
class TestRevisioning(test.TestCase):
fixtures = ['MyModel']
def testDelete(self):
object1 = models.MyModel.objects.first()
with transaction.atomic():
with reversion.create_revision():
object1.delete()
self.assertEquals(reversion.get_deleted(models.MyModel).count(), 1)
Run Code Online (Sandbox Code Playgroud)
使用以下命令检查已删除的QuerySet的长度时,此操作失败:
AssertionError: 0 != 1
Run Code Online (Sandbox Code Playgroud)
我的假设是我需要创建我的模型的初始修订版(相当于./manage.py createinitialrevisions
).如果这是问题,我如何在测试中创建初始修订?如果那不是问题,我还能尝试什么?
我试图弄清楚如何使用 Django-reversion 跟踪 Django 中外键关系的更改。
简而言之,我正在尝试建模 a Codelist
,其中包含仅属于一个 Codelist 的Code
s 。这可以使用外键进行建模,如下所示:
class CodeList(models.Model):
name = models.CharField(max_length=100)
class Code(models.Model):
value = models.PositiveIntegerField(max_length=100)
meaning = models.CharField(max_length=100)
codelist = models.ForeignKey(CodeList,related_name="codes")
Run Code Online (Sandbox Code Playgroud)
此外,编辑代码的唯一方法是在通过其代码列表访问的管理站点中使用内联表单。出于所有意图和目的,代码属于代码列表,因为它们应该......
除非涉及到回归。
我正在使用reversion.middleware.RevisionMiddleware
来跟踪所有编辑更改,因为有一些用于编辑代码的非管理表单。
我想要的是当我看到代码列表的历史时,它也应该更改代码,但我无法在Django-reversion API 中弄清楚。问题在于 API 涵盖了跟踪代码和查看代码列表的更改,而不是通过遵循相反的关系来解决问题。
有谁知道如何做到这一点?
我想在django-reversion中保存新的对象版本.我浏览了文档,但没有找到任何相关信息.我怎样才能实现它?
我正在使用django-reversion为模型提供历史记录我发现reversion创建了两个表,表'reversion_revision'和'reversion_version'并且在reversion_revision中存储了进行最后更改的用户ID.但我无法得到这些信息.我使用函数'reversion.get_for_object(Model)'来获取某些模型的所有版本,但该函数只返回存储在表'reversion_version'中的信息,我需要获取表reversion_revision的用户id现在有人如何我该怎么做用户ID?
我正在尝试使用django-reversion在django项目中实现"撤消"功能,以防用户意外修改多个对象.使用管理面板将无法正常工作,因为必须逐个还原对象.
我的问题是我无法创建包含多个对象数据的修订版.
即使我这样做
with reversion.create_revision():
Res.object.all().delete()
Run Code Online (Sandbox Code Playgroud)
然后我无法访问将此更改分组的修订版.它分为"one object one revision.models.Version"方式.
In [103]: reversion.models.Version.objects.all()
Out[103]: [<Version: #00001>, <Version: #00002>]
Run Code Online (Sandbox Code Playgroud)
我也试过了
reversion.models.Revision.objects.all().order_by('-date_created')[0].version_set.all()
Run Code Online (Sandbox Code Playgroud)
但它也只为一个已删除的Res对象返回了一个版本.好像我错过了什么.
您好,我在添加 django-reversion 和 django-reversion-compare 模块时遇到了一些问题。
我创建了新项目,我想使用 django-reversion 跟踪 user_auth 日志更改(在使用 django-reversion 注册用户模型后,我想使用 django-reversion-compare)。
from django.contrib import admin
from django.contrib.auth.models import User
from reversion.admin import VersionAdmin
@admin.register(User)
class UserModelAdmin(VersionAdmin):
pass
Run Code Online (Sandbox Code Playgroud)
当我想注册模型用户时出现错误
django.contrib.admin.sites.AlreadyRegistered: The model User is already registered
Run Code Online (Sandbox Code Playgroud)
如何将 django-reversion 和 django-reversion-compare 与 User 模型一起使用?
我正在使用django-reversion文档调用低级API,以便在我自己的代码中访问reversion历史记录,除了admin.为了存储元数据,我Revision
通过设置我自己的模型来扩展模型,包括a OneToOneField(Revision)
.到现在为止还挺好.
但考虑到参照Revision
,我怎么能直接访问修订之前呢?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object
和搜索列表中我正在寻找的版本?
django ×12
django-reversion ×12
python ×6
admin ×1
django-1.8 ×1
django-south ×1
reversion ×1
undo ×1
unit-testing ×1