标签: django-reversion

django-reversion和相关模型

我有以下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 django-reversion

18
推荐指数
1
解决办法
1676
查看次数

Django-reversion和南兼容性

django-reversion是否适用于南迁?
django-reversion和南方兼容吗?

当前版本:
- 回归 - 1.2.1
- 南 - 0.7.1

django compatibility django-models django-south django-reversion

10
推荐指数
1
解决办法
1964
查看次数

Django reversion不保存shell中的修订版

我做了初始安装步骤并创建了初始修订版,但是当我在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 django-models django-reversion

9
推荐指数
1
解决办法
2366
查看次数

Django Admin同时使用Django Reversion和Django-Import-Export

我试图为相同的模型启用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

python django admin django-reversion

9
推荐指数
1
解决办法
917
查看次数

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

我有一个使用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 django-reversion django-rest-framework

7
推荐指数
1
解决办法
2988
查看次数

在测试用例中使用django-reversion时如何为测试对象创建初始修订版

当我玩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).如果这是问题,我如何在测试中创建初始修订?如果那不是问题,我还能尝试什么?

python django unit-testing django-reversion

5
推荐指数
1
解决办法
727
查看次数

在 django-reversion 中跟踪外键的反向关系

我试图弄清楚如何使用 Django-reversion 跟踪 Django 中外键关系的更改。

简而言之,我正在尝试建模 a Codelist,其中包含属于一个 Codelist 的Codes 。这可以使用外键进行建模,如下所示:

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 django-reversion

5
推荐指数
1
解决办法
1470
查看次数

如果Django-reversion中没有任何更改,请不要创建新版本

我想在django-reversion中保存新的对象版本.我浏览了文档,但没有找到任何相关信息.我怎样才能实现它?

django django-reversion django-1.8

5
推荐指数
1
解决办法
376
查看次数

django-reversion如何获取用户ID

我正在使用django-reversion为模型提供历史记录我发现reversion创建了两个表,表'reversion_revision'和'reversion_version'并且在reversion_revision中存储了进行最后更改的用户ID.但我无法得到这些信息.我使用函数'reversion.get_for_object(Model)'来获取某些模型的所有版本,但该函数只返回存储在表'reversion_version'中的信息,我需要获取表reversion_revision的用户id现在有人如何我该怎么做用户ID?

python django reversion django-reversion

3
推荐指数
1
解决办法
1188
查看次数

django-reversion undo功能 - 恢复多个对象

我正在尝试使用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对象返回了一个版本.好像我错过了什么.

python django undo django-reversion

3
推荐指数
1
解决办法
2891
查看次数

django-reversion 和 django-reversion-compare 与用户模型

您好,我在添加 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 模型一起使用?

python django django-reversion

2
推荐指数
1
解决办法
745
查看次数

以前版本的django-reversion控制对象

我正在使用django-reversion文档调用低级API,以便在我自己的代码中访问reversion历史记录,除了admin.为了存储元数据,我Revision通过设置我自己的模型来扩展模型,包括a OneToOneField(Revision).到现在为止还挺好.

但考虑到参照Revision,我怎么能直接访问修订之前呢?例如,要生成此修订版与上一版本之间的更改列表,是否有更有效的方法,而不是回调reversion.get_for_object和搜索列表中我正在寻找的版本?

python django django-reversion

1
推荐指数
1
解决办法
1495
查看次数