在我的应用程序中,当保存模型时,我需要保存更改的值(旧的和新的).有什么示例或工作代码吗?

我需要这个来预审内容.例如,如果用户更改了模型中的某些内容,则管理员可以在单独的表中查看所有更改,然后决定是否应用它们.

推荐答案

关于您的特定用例或需求,您没有说太多.特别是,了解您需要如何处理更改信息(您需要将其存储多长时间?)会很有帮助.如果您只需要暂时存储它,@S.Lott的会话解决方案可能是最好的.如果您想要对存储在数据库中的对象的所有更改进行完整的审计跟踪,请try 这个AuditTrail solution.

UPDATE:我链接到上面的AuditTrail代码是我见过的最接近于适用于您的情况的完整解决方案的代码,尽管它有一些限制(对ManyToMany字段完全不起作用).它将在数据库中存储对象的所有以前版本,因此管理员可以回滚到任何以前版本.如果您希望更改在获得批准之前不生效,则必须对其进行一些修改.

您还可以基于@Armin Ronacher的DiffingMixin之类的东西构建自定义解决方案.您会存储diff字典(可能是腌制的?)在供管理员稍后查看并根据需要应用的表中(您需要编写代码以获取diff字典并将其应用于实例).

Django相关问答推荐

Django动态页面.为什么我的代码不工作?

在生产中添加整型主键

通过get_form_kwargs将请求传递给Django表单未能使表单访问self.request.user.

如何创建复杂的查询?| ChartJS 和 Django

Django通用列表视图与多查询搜索

身份验证有效,但登录无效.一直卡在pending

如何在 django 中修改现有模型实例?

如何测试某个日志(log)消息是否记录在 Django 测试用例中?

Django -- User.DoesNotExist 不存在?

Django - 无法为具有动态 upload_to 值的 ImageField 创建迁移

带有消息判断的 Django/Python assertRaises

Django - 如何从模型实例中获取管理员 URL

在 Django Admin 中过滤多对多框

使用 get_object_or_404 获取数据库值

django admin 排序外键字段列表

Django 什么是反向关系?

在 PyPy 下运行 Django 的缺点?

在 Django 中的字段中添加额外的约束

django select_related - 何时使用它

如何更改 ModelForm 中所有 Django 日期字段的默认小部件?