1

オブジェクト自体が削除された場合、djangoの単純な履歴を使用して、オブジェクトに関連付けられたすべての履歴を削除する方法はありますか? たとえば、 User モデルがある場合:

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

解決策を見つけたと思います。パフォーマンス上の理由でこれが悪い場合はお知らせください。

User の delete() メソッドをオーバーライドします。

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