我们为我们的模型设置了django-simple-history。最近,一大堆模型被神秘地删除了。这在事件发生后几天就被注意到了,所以避免完全数据库备份还原是很好的,因为这将擦除事后发生的手动更改。
我找不到任何方法来轻松恢复模型实例,特别是删除的模型实例。我可以查询模型的历史版本,并找到被删除的所有内容。有了这些,我还可以观察到,它们的最后一次更改都有删除。我可以使用history -1上的instance属性来获取删除前的状态,但是如果我尝试保存它,它就会出错,因为模型实例已被删除并且不再存在。
所以基本上,如果我用django-simple-history记录了一个已删除的模型实例,那么恢复它的最干净的方法是什么?如果可能的话,我想保留历史记录,所以在完全重新创建对象之前,我正在寻找任何解决方案。
发布于 2019-03-14 18:36:23
据我所知,这个问题是关于恢复删除的模型实例,而不是类本身。因此,Kal的答案在这里没有帮助。若要恢复已删除的实例,不能使用简单历史记录。根据documentation的说法,简单的历史只能恢复仍然存在的模型实例。因为您有数据库的完整备份,所以您可以将此数据库导入到django环境中,从该备份数据库加载旧模型实例并将其保存到生产数据库(在django shell中使用“using”选择数据库)。请参阅this post。避免这种情况的最好方法是使用应用程序"reversion“。使用此django-app,您实际上可以恢复已删除的实例。请参阅documentation。
发布于 2018-04-14 17:31:09
你的意思是你的模型,而不仅仅是实例,已经被完全删除了?如果是这样的话,可能意味着一些迁移删除了它。
您可以尝试恢复迁移,然后从历史记录中恢复。
发布于 2020-10-02 21:08:53
模型的早期版本存储在_HISTORICAL表格中。您可以执行一个简单的sql insert/select查询,将数据从该表复制回原始表。如下所示将会起作用,但请检查数据库的正确sql语法。
insert into app_mymodel (col_a, col_b)
select col_a, col_b from app_HISTORICALmymodel
where id in (1,2,3...)https://stackoverflow.com/questions/41731110
复制相似问题