Django:模型实例历史记录

2024-01-01

在我的项目中,我必须处理上传的文件,并且我想拥有每个文件版本的历史记录。并在一个视图中显示历史记录。 在我的模型中,每个文件都有一个版本、名称和路径。该文件通过一对多关系与其他类“A”相关。 我想要一种更新功能来替换以前的文件,并且我还想要访问具有文件及其相关模型实例(A 类)的所有特征的历史记录。

我不知道该怎么办。我听说过 django reversion 和 django revisions。 你对我有什么建议?

谢谢


您可以通过几种方式做到这一点:

1.您可以拥有一个手动跟踪它的文档文件模型。

class DocumentFile(CachedModel):
   content_type    = models.ForeignKey(ContentType, null=True, blank=True)
   object_id       = models.PositiveIntegerField(null=True, blank=True)
   content_object  = generic.GenericForeignKey(ct_field='content_type', fk_field='object_id')       
   file = models.FileField(upload_to= wherever )
   version = models.PositiveIntegerField(default=1)

   class Meta:
        db_table = 'document_file'
        verbose_name = 'Document File'
        unique_together = ('document', 'version')

您可以有一个名为 new_version 的 post_save 信号,并更新文档上的当前修订号

2.您甚至可以使用亚马逊的s3来存储文档,并通过修订号访问它,并向其传递修订号的get参数(这是一种成本更高的方法)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:模型实例历史记录 的相关文章

随机推荐

  • 有没有一种方法可以在不发送测试邮件的情况下测试电子邮件地址是否存在? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在不发送电子邮件的情况下检查电子邮件地址是否存在 https stackoverflow com questions 565504 how to check if an email address
  • Windows Azure 多重部署

    这是场景 太多的网站具有相同的源代码和自己的数据库 每个客户都有自己的系统和自己的数据库 但所有客户都使用相同的源代码 我只有一个 TFS 项目 因为所有客户都使用相同的代码 不是物理上的 因为我必须在每个网站上部署到每个客户 问题 我如何
  • 运输例外

    我正在尝试导入 happybase 但在连接时收到以下错误消息 我已经运行了 Hadoop 伪节点集群和 Hbase 安装的组件版本如下 Hadoop 版本 1 0 4 Hbase 版本 0 94 4 快乐基地 0 4 有人可以查看下面的例
  • R 编程:自动合并字符串

    我正在尝试自动化这里工作的一些系统 专门用于根据调查数据生成报告 假设我对 1 个问题有 3 条评论 current comments lt c too slow not fast enough bad speed 基本上我想要做的是将注释
  • 如何从 servlet 调用 EJB 3.1 非零参数构造函数?

    我有一个 login java servlet 正如其名称所示 它为我的 Web 应用程序提供登录功能 我是一名新手 正在使用 EJB 3 1 和 EE 6 在我的 LoginBean java EBJ 中 我有一个无参数构造函数和另一个具
  • 在android中动态创建活动

    android 如何从 android 清单文件注册一个活动 以便它出现在包管理器中 我确实明白这是在安装应用程序时完成的 有没有办法调整 android 源代码来创建 API 来动态创建和注册活动 android如何从android清单文
  • 以计数作为标签的 2D 摘要图

    我有一个数量的测量值 value 在特定点 lon and lat 如下面的示例数据 library ggplot2 set seed 1 dat lt data frame lon runif 1000 1 15 lat runif 10
  • 有没有办法在 Swift 中重写数组到字符串的转换?

    我正在尝试使用 Swift 让它看起来更 动态类型 只是为了好玩 没有预期的生产价值 现在我陷入了将内置类型转换为的覆盖行为String 例如 我想看到这个输出Array let nums 1 2 3 print nums I m an a
  • 码头工人。没有这样的文件或目录

    我有一些文件 我想将它们移动到 Docker 容器中 但最后 docker 找不到文件 本地计算机上包含文件的文件夹位于 home katalonne flask4 文件结构如果重要的话 The Dockerfile First Flask
  • 如何根据两个不同活动中其他旋转器的位置来更改旋转器的位置

    我在两个不同的活动中有两个 Android 微调器下拉列表 但是两个微调器都具有来自同一源的相同数据 我想根据第一个活动的位置更改第二个活动的位置 如何解决此问题 更新的代码 第一个活动 public class ServiceReques
  • 发送带有正文的 Angular $http.delete

    在我的 Angular 应用程序中 我需要发送 http delete请求这条路线 projects id activityTypes 注意它不以活动类型 ID 结尾 传递具有以下格式的正文 id 2 这是为了允许通过发送数组内的多个对象来
  • 如何在react.js中使用Enter键提交表单?

    这是我的表单和 onClick 方法 我想在按下键盘的 Enter 按钮时执行此方法 如何 N B 没有jquery被赞赏 comment function e e preventDefault this props comment com
  • 如何有效地将字符串与一组通配符字符串进行匹配?

    我正在寻找一种将单个字符串与一组通配符字符串进行匹配的解决方案 例如 gt gt gt match ab a b c b a b 输出的顺序并不重要 我将按照 10 4 个通配符字符串的顺序进行匹配 并且我将进行大约 10 9 个匹配调用
  • python 中“itertools.combinations”的计算复杂度是多少?

    itertools combinationspython 是一个强大的工具 可以找到所有组合r但是 我想了解它的条款计算复杂度 假设我想知道以下方面的复杂性n and r 当然它会给我所有r列表中的术语组合n terms 根据官方文档 这是
  • 使用 Excel 在 WCF mex Moniker 上调用方法时出现自动化错误

    我成功创建了一个服务名字作为我的 WCF 服务的客户端 但我无法调用该名字的任何方法 在WCF服务端我有一个名为TestMethod的虚拟方法 如下所示 Public Function TestMethod ByVal TestValue
  • kubernetes 中的 MySQL 路由器作为服务

    我想在 Kubernetes 中部署 MySQL router 作为服务 我的计划 在 k8 内部署 MySQL router 并使用以下命令将 MySQL router 作为服务公开LoadBalancer 金属LB 在 k8 内运行的应
  • $sce.trustAsHtml 与 ng-bind-html

    为什么我不能这样做 div data htmlfilterexample div 当我在过滤器内返回时 return sce trustAsHtml input Using div div 无论过滤器是否返回都有效input or sce
  • Java - CompareTo 和运算符

    如果我有课Person实现Comparable 比较personA height to personB height 例如 是否可以使用 personA lt personB 作为替代品 personA compareTo personB
  • 在 Marionette 中从一个区域切换到另一个区域时,视图渲染不正确

    我正在与Marionette我有以下问题 我创建了一个包含两个不同区域的布局 在initialize该布局在布局的两个区域中加载两个视图 说ViewA and ViewB 之内ViewA一个事件被触发 该事件由布局消耗以进行切换 并注入其他
  • Django:模型实例历史记录

    在我的项目中 我必须处理上传的文件 并且我想拥有每个文件版本的历史记录 并在一个视图中显示历史记录 在我的模型中 每个文件都有一个版本 名称和路径 该文件通过一对多关系与其他类 A 相关 我想要一种更新功能来替换以前的文件 并且我还想要访问