从应用程序更改时,django 简单历史记录不起作用

标签 django python-2.7 django-models

我正在使用 django-simple-history 来记录数据库模型中的更改历史记录。当我更改模型历史中的特定值时,管理面板中是可见的。但是当从应用程序编辑或更改值时,历史记录在管理面板中不可见。有什么我想念的。

from django.db import models
from simple_history.models import HistoricalRecords

class AcademicYear(models.Model):
    academic_year_start = models.PositiveIntegerField(blank=False, null=False, max_length=4)
    academic_year_end = models.PositiveIntegerField(blank=False, null=False, max_length=4)
    history = HistoricalRecords()


    def __unicode__(self):
        return "%s-%s" % (self.academic_year_start, self.academic_year_end)

class Activity(models.Model):
    activity_name = models.CharField(max_length=100, blank=False)
    history = HistoricalRecords()

    def __unicode__(self):
        return "%s" % self.activity_name

更新

我调查了我的
在 View 中而不是 .save()我正在使用 .update()用于更新我的模型值。
activity_obj_list = Activity.objects.filter(activity_name=name)
activity_obj_list.update(activity_name=new_activity_name)

更新功能不会创建历史日志。这是某种错误吗?

最佳答案

这不是错误,而是预期的行为,因为 .update()不发送前/后保存信号。如果您希望触发历史记录,请遍历您的查询集,执行 save()而不是使用 .update()

for obj in queryset:
    obj.field1 = some_value
    obj.save()

关于从应用程序更改时,django 简单历史记录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30122646/

相关文章:

python - 防止从导入数据库的 Excel 表单中添加重复数据

django - 在 Django 中动态地从对象 _meta 获取外键的详细名称

python - 获取<生成器对象<genexpr>

python - 检索纯字段标签

python - 对于这种(虚拟表的)API,我应该规范化我的模型还是使用大表?

python - 使用 Django 将 Unicode 字符存储到 MySQL 时出现问题

django 中间件只有 "process_response"当缺少斜杠时

python-2.7 - 使用 Beautifulsoup 4 进行网页抓取

python - 如何在 Django 中为对象使用临时存储?

django - 提高 Django PostgreSQL 查询的性能