使用 Django Simple History 创建历史记录的问题

Problem in Creating history record using Django Simple History

为什么 Django-Simple 历史记录在调用保存方法时创建,如果我调用更新然后它不创建历史记录?

Django:1.11.15 Django-简单历史:1.9.0 Python : 3.6

documentation 中所写,这是一个已知问题:

Django Simple History functions by saving history using a post_save signal every time that an object with history is saved. However, for certain bulk operations, such as bulk_create and queryset updates, signals are not sent, and the history is not saved automatically. However, Django Simple History provides utility functions to work around this.

所以基本上应用程序利用了你 .save() 模型这一事实,而这是 绕过 一些 ORM 调用(因为那样你就无法执行"bulk" 中数据库级别的操作)。

而不是使用

Entry.objects.filter(pub_date__year=2010).update(comments_on=False)

因此您需要执行:

for e in Entry.objects.filter(pub_date__year=2010):
    e.comments_on = False
    e.save()

对于 bulk_create 有一个变体:bulk_create_with_history,从那时起它只进行两次批量创建:一次用于对象,一次用于 "histories".