Arp*_*pit 2 django django-simple-history python-3.6
为什么 Django-Simple 历史记录在调用 save 方法时创建,如果我调用 update 那么它不会创建历史记录?
Django:1.11.15 Django-简单历史:1.9.0 Python:3.6
正如文档中所写,这是一个已知问题:
Django Simple History 的功能是在
post_save每次保存具有历史记录的对象时使用信号保存历史记录。但是,对于 某些批量操作,例如bulk_create和 querysetupdates,不会发送信号,并且不会自动保存历史记录。然而,Django Simple History 提供了实用函数来解决这个问题。
因此,基本上该应用程序利用.save()了模型这一事实,而这会被一些 ORM 调用所规避(因为这样您就无法再在数据库级别“批量”执行操作了)。
而不是使用
Entry.objects.filter(pub_date__year=2010).update(comments_on=False)
Run Code Online (Sandbox Code Playgroud)
因此,您需要执行:
for e in Entry.objects.filter(pub_date__year=2010):
e.comments_on = False
e.save()Run Code Online (Sandbox Code Playgroud)
对于 abulk_create有一个变体:bulk_create_with_history,从那时起它只是进行两个批量创建:一个用于对象,另一个用于“历史”。
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |