迁移后,Django reversion无法恢复对象

时间:2017-05-23 00:48:46

标签: django django-reversion

我有这个型号:

listTwo

现在我决定将此字段添加到模型中:

from django.contrib.auth.models import User
from django.db import models
import reversion


@reversion.register()
class BlogPost(models.Model):
    author = models.ForeignKey(User)
    title = models.CharField(max_length=32)
    content = models.TextField()

我创建了迁移并选择默认值:

random_field = models.PositiveIntegerField(null=False, blank=False)

并迁移它。

现在,我正在使用Django管理员进行reversion支持,我在迁移之前几次修改了博客文章,现在我想迁移到没有随机字段的版本。它说:

operations = [
    migrations.AddField(
        model_name='blogpost',
        name='random_field',
        field=models.PositiveIntegerField(default=10),
        preserve_default=False,
    ),
]

有没有办法如何防止这种情况?我认为这是因为迁移没有创建修订。 好像错误就在这里: reversion/models.py#L21

我正在使用

Could not save BlogPost object version - missing dependency.

使用sqlite db。

有没有办法阻止这种情况?

1 个答案:

答案 0 :(得分:0)

根据image for dist = 5

  啊,我明白了。烦人。似乎修订可以处理删除   一个字段,但不添加一个。

     

自动化这几乎是不可能的。有修改   数据库那里有旧版本的gigbytes,并更新旧版本   发生新迁移时的修订数据可能需要数天的运行时间   每次迁移。这不太可行。

     

我的一般方法是在迁移后删除修订数据。   如果你真的想保留它,那么你可以编写自己的数据   在应用程序中迁移。

- 项目的作者。

因此,似乎根本不支持迁移后恢复,虽然它可能有效,但有时它并不意味着以这种方式使用。