Python Django 添加自定义管理器-实现逻辑删除

在我们用户中心项目里面,如果用 django 框架去实现逻辑删除是跟 java 不太一样,java 通过修改,MyBatis ,这边 django 自带 ORM,它的工作方式,是每个 Model 类其实对应一个数据库表,而每个Model 类 都会有一个默认管理器,但是现在我们希望只显示表中is_delete=0 的数据,也就是没有被逻辑删除的数据,所以我们需要对 model 自定义一个管理器才可以实现

  1. 在 models.py 当中 添加自定义管理器来实现逻辑删除
python
复制代码
# 自定义管理器,实现逻辑删除 class ActiveUserManager(models.Manager): #重写这个方法,过滤逻辑上删除的用户,再返回 def get_queryset(self) -> models.QuerySet: return super().get_queryset().filter(is_delete=0)
  1. 在要使用自定义管理器的 model 里,把自定义管理器改成默认使用项
python
复制代码
class Users(models.Model): # ... 现有字段 ... # 添加自定义管理器 objects = ActiveUserManager() # 默认只返回未删除用户 all_objects = models.Manager() # 原始管理器 class Meta: managed = False db_table = "users" db_table_comment = "用户"
  1. 在调用的时候 默认过滤逻辑删除用户
python
复制代码
user.objects.all() # 返回逻辑删除用户合集
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP