zoukankan      html  css  js  c++  java
  • Django soft-delete软删除

       在django中,实现这个功能很简单,我们采用一个字段用来保存删除的时间。若记录没有被删除,那么设置该值为None,如果被删除,那么设置时间为删除的时间。

    1 class BaseSchema(models.Model):
    2     createdAt = models.DateTimeField("创建时间",auto_now_add=True)
    3     updatedAt = models.DateTimeField("更新时间",auto_now=True)
    4     deletedAt = models.DateTimeField("删除时间",null=True,default=None)
    5 
    6     def delete(self, using=None, keep_parents=False):
    7         self.deletedAt = timezone.now()
    8         self.save()

    上面是一个基类,正真的模型是继承自它,这样可以记录下创建时间,每次会自动更新更新时间,并且实现了软删除。

    可以看到,重写了delete方法,当执行删除操作的时候(例如:User.objects.get(id=1).delete()),会在里面更新属性deletedAt的值,然后保存,并不会正真删除记录。

    所以你在取得元素的时候,要注意一些,需要使用filterUser.objects.filter(deletedAt=None),而不是all()

    学习博客地址: http://m.blog.csdn.net/q1242027878/article/details/74906780




  • 相关阅读:
    Ubuntu系统
    demo日常报错
    python 实现两个多维数组去重处理
    奔跑检测
    安装Win11如何绕过TPM2.0的安全限制?
    Nginx的Rewrite
    gvim 配置
    Tokyo Cabinet和Tokyo Tyrant及PHP扩展包的安装
    fm rf 删除 恢复
    提高页面loadtime的几个方法
  • 原文地址:https://www.cnblogs.com/python-nameless/p/7850804.html
Copyright © 2011-2022 走看看