Django:模型实例历史

时间:2012-08-27 15:24:33

标签: django revision-history

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

我不知道该怎么做。我听说过django reversion和django修订版。 你有什么建议给我?

谢谢

1 个答案:

答案 0 :(得分:0)

你可以通过以下两种方式实现:

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来存储文档,并通过修订号访问它,并为其提供修订号的获取参数(这是一种更昂贵的方法)