Skip to main content
 首页 » 编程设计

python之Django之保留字段的历史

2025年05月04日27shihaiming

使用 django 1.7 管理页面,我希望 Person 对象具有唯一的注释,同时保留注释字段的历史记录。 这是我的代码:

class Note(models.Model): 
    note = models.TextField(blank=True, default='') 
    date = models.DateTimeField(auto_now_add=True) 
 
    def __unicode__(self): 
        return self.note 
 
 
class NoteHist(models.Model): 
    id = models.AutoField(primary_key=True) 
    note = models.ForeignKey('Note') 
 
    def __unicode__(self): 
        return str(self.note) 
 
 
class Person(models.Model): 
    name = models.CharField(max_length=20, primary_key=True) 
    note = models.ForeignKey('NoteHist') 
 
 
    def __unicode__(self): 
        return self.name 

首先,当按下笔记对话框上的保存按钮时,弹出窗口重定向到一个空白页面,就好像它被破坏了一样;但我可以刷新主管理页面以列出注释。 其次,注释不是特定于人的。我的意思是 Person2 可以选择 Person1 写的笔记。 我只想显示特定 Person 写的最后一个笔记,同时保留他笔记的历史记录。 顺便说一句,如果这样更容易的话,我不需要在管理页面中显示历史记录。 请指导我。

请您参考如下方法:

基本思想是在每次通过覆盖 Note 的“保存”方法更新 Note 对象时创建一个新的 NoteHist 实例。

这是一个类似的问题:Store versioned history of Field in a Django model

显然,有一个包在每次创建/更新/删除时存储 Django 模型状态,还支持与 django 管理集成:https://github.com/treyhunner/django-simple-history