【问题标题】:Django Simple History Delete all History on Model DeleteDjango简单历史删除模型删除的所有历史
【发布时间】:2016-06-06 01:24:27
【问题描述】:

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


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      我想我找到了一个解决方案,如果由于某些性能原因这会导致问题,请告诉我:

      覆盖用户的 delete() 方法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-24
        • 2020-03-22
        • 2011-10-26
        • 2011-02-10
        • 2013-05-27
        • 1970-01-01
        相关资源
        最近更新 更多