使用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()
谢谢。
在某些情况下,你可能想要删除所有的历史记录时的主记录被删除。这可以通过设置
cascade_delete_history=True
完成
class Poll(models.Model):
question = models.CharField(max_length=200)
history = HistoricalRecords(cascade_delete_history=True)
我想我找到了解决办法,让我知道这是不好的一些性能原因:
覆盖在用户的删除()方法:
class User(...):
...
def delete(self):
self.history.filter().delete()
super(User, self).delete()