使用 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 update
s, 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".
为什么 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 asbulk_create
and querysetupdate
s, 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".