【问题标题】:How to write a revision for Gerenic DeleteView visible in the admin (Django Reversion)?如何为管理员中可见的 Gerenic DeleteView 编写修订版(Django Reversion)?
【发布时间】:2015-12-02 04:34:43
【问题描述】:

当我在安装了 Reversion 的 Django Admin 中删除一个对象时,我可以查看所有已删除的对象。但是当我在自己编写的(普通)视图中删除它时,我看不到被删除的对象。 (我正在使用上下文管理器。当我在通用视图中更新对象时,我可以看到历史记录的变化。)

这就是我尝试的方式(所有类和方法都没有修改):

class ModelDelete(DeleteView):
    def delete(self, request, *args, **kwargs):
        with transaction.atomic(), reversion.create_revision():
            reversion.set_user(request.user)
            reversion.set_comment('Deleted')
            return super(ModelDelete, self).delete(request, *args, **kwargs))

我正在使用 Django 1.7.10 和 Reversion 1.9.3。

我在文档中找不到如何做到这一点。我想念什么?我认为这很容易。

【问题讨论】:

    标签: django django-generic-views django-reversion


    【解决方案1】:

    删除对象不会将其添加到修订版中。在删除之前尝试保存对象。

        with transaction.atomic(), reversion.create_revision():
            obj = self.get_object()
            obj.save() # save the object so it is added to the revision.
            reversion.set_user(request.user)
            reversion.set_comment('Deleted')
            return super(ModelDelete, self).delete(request, *args, **kwargs))
    

    【讨论】:

    • 当我在管理员中单击“恢复已删除的 MyModels”时,是否会导致在列表中显示对象(因为当我删除对象时,“历史”在管理员中消失了)?跨度>
    • 无论您是否在删除时创建修订版,该对象都应出现在“恢复已删除的 MyModels”中。通过在删除时创建修订,您可以记录谁删除了该对象。
    • 谢谢!现在我还看到删除的对象在该列表中可见,最后。顺便说一句,self.objectdef delete 中不可用。
    • 查看the codedelete() 方法使用self.object = self.get_object() 获取对象,因此您必须在覆盖的方法中执行相同操作。我已经更新了上面的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2023-03-18
    • 2012-08-27
    • 2016-10-03
    • 2020-01-08
    相关资源
    最近更新 更多