Django简单历史删除模型删除的所有历史记录

时间:2016-06-06 01:24:27

标签: python django django-simple-history

使用django简单历史记录,如果删除了对象本身,有没有办法删除与对象关联的所有历史记录?例如,如果我有用户模型:

User.objects.filter(id=to_delete_id).delete()

该查询将删除该用户,但它不会删除所有历史记录,我希望节省数据费用。有没有办法在删除时自动删除所有特定用户的历史记录,或者我是否必须这样做:

User.objects.filter(id=to_delete_id).delete()
User.history.filter(id=to_delete_id).delete()

感谢。

2 个答案:

答案 0 :(得分:1)

从文档中:https://django-simple-history.readthedocs.io/en/2.7.0/historical_model.html#deleting-historical-record

  

在某些情况下,您可能希望删除所有历史记录   删除主记录时的记录。这可以通过   设置cascade_delete_history=True

class Poll(models.Model):
    question = models.CharField(max_length=200)
    history = HistoricalRecords(cascade_delete_history=True)

答案 1 :(得分:0)

我想我找到了一个解决方案,请告诉我这是否有一些性能原因:

覆盖User上的delete()方法:

class User(...):
    ...
    def delete(self):
        self.history.filter().delete()
        super(User, self).delete()