jvc*_*c26 5 architecture django django-models django-database
在代码库中实现软删除的最佳方法是什么(特别是Django项目)?
我认为最简单的方法是简单地添加:
is_deleted = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
到一个实现a的超类softDeleteObject,然后重写delete()以在相关对象上设置适当的标志.相关对象还需要从同一个超类继承.
另一种方法是删除原始文件,并将其等于存档对象,该对象是已删除对象的表示.
第一个似乎具有更大程度的简单性,但确实需要一些广泛的覆盖 - 例如,User必须重写以确保所有已删除对象的外键关系仍然保持,并且删除用户然后没有' t hard删除所有软删除的对象.
第二个可以用pre_delete信号实现,该信号触发代理对象的创建.这又有一些优点(不需要覆盖所有delete()方法),但确实需要实现项目中使用的模型的存档版本.
哪个更好,还有其他选择吗?
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |