1

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

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

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

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

谢谢。

4

2 回答 2

2

来自文档: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)
于 2019-02-05T00:21:36.123 回答
1

我想我找到了一个解决方案,让我知道这是否由于某些性能原因而不好:

覆盖用户的 delete() 方法:

class User(...):
    ...
    def delete(self):
        self.history.filter().delete()
        super(User, self).delete()
于 2016-06-06T02:28:05.620 回答