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

问题描述 投票:0回答:2

使用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()

谢谢。

python django django-simple-history
2个回答
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)

0
投票

我想我找到了解决办法,让我知道这是不好的一些性能原因:

覆盖在用户的删除()方法:

class User(...):
    ...
    def delete(self):
        self.history.filter().delete()
        super(User, self).delete()
© www.soinside.com 2019 - 2024. All rights reserved.