Как написано в документации , это известная проблема:
Django Simple History функционирует, сохраняя историю, используя сигнал post_save
каждый раз, когда объект с историейсохраняетсяОднако для определенных массовых операций, таких как bulk_create
и набор запросов update
s, сигналы не отправляются, и история не сохраняется автоматически .Тем не менее, Django Simple History предоставляет вспомогательные функции, чтобы обойти эту проблему.
Таким образом, в основном приложение использует тот факт, что вы .save()
модель, а это обойдено некоторые вызовы ORM (потому что тогда вы больше не сможете выполнять массовые действия на уровне базы данных).
Вместо использования
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
, поскольку с тех пор он просто создает два объемных создания: одно для объектов и одно для"истории".