gpt4 book ai didi

Django 和软删除 : Implementation architecture

转载 作者:行者123 更新时间:2023-12-04 21:45:37 24 4
gpt4 key购买 nike

定义

  • SOFT DELETE - 不会从数据库中删除对象,但似乎会这样做
  • 硬删除 - 从数据库中完全删除对象


  • 在代码库(特别是 Django 项目)中实现软删除的最佳方法是什么?
    我认为最简单的方法是简单地添加:
    is_deleted = models.BooleanField(default=False)
    到实现 softDeleteObject 的父类(super class),然后覆盖 delete()在有问题的对象上设置适当的标志。相关对象也需要从同一个父类(super class)继承。
    另一种方法是删除原始对象,并拥有相当于已删除对象表示的存档对象。
    分析
    第一个看起来更简单,但确实需要一些广泛的覆盖 - 例如, User必须被覆盖以确保所有已删除对象的外键关系仍然存在,并且删除用户不会硬删除其所有软删除对象。
    第二个可以用 pre_delete 信号实现,触发代理对象的创建。这再次具有一些优点(不需要覆盖所有 delete() 方法),但确实需要实现项目中使用的模型的存档版本。
    哪个更可取,还有其他选择吗?

    最佳答案

    为什么不在需要的特定模型上使用事件/已删除/状态标志并这样做呢?或查看应用 django-reversion , 可能有你需要的一切;)

    关于Django 和软删除 : Implementation architecture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14957416/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com