django中实现逻辑删除(转)

django中实现逻辑删除,主要分三步:

1.增加字段:

is_delete = models.BooleanField(default=False, verbose_name='逻辑删除', help_text='逻辑删除')

2.重写models中delete方法:

def delete(self, using=None, keep_parents=False):
        """重写数据库删除方法实现逻辑删除"""
        self.is_delete = True
        self.save()

3.views中过滤查询结果集:

queryset = Role.objects.filter(is_delete=0).all()

class Role(models.Model):
    """角色表"""
    name = models.CharField(max_length=30, unique=True, verbose_name='角色名称',
                            help_text='角色名称')  # 媒体运营,媒介,广告运营,销售,活动运营,财务,技术,唯一,必填
    desc = models.CharField(max_length=100, null=True, blank=True, verbose_name='角色描述', help_text='角色描述')  # 非必填
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除', help_text='逻辑删除')
 
    class Meta:
        db_table = 'tb_role'
        verbose_name = '角色'
        verbose_name_plural = verbose_name
 
    def delete(self, using=None, keep_parents=False):
        """重写数据库删除方法实现逻辑删除"""
        self.is_delete = True
        self.save()
 
    def __str__(self):
        """控制对象输出内容"""
        return self.name

如果使用到drf,则返回查询结果集时进行过滤再返回,这样被标记为逻辑删除记录就不会返回:

class RoleViewSet(ModelViewSet):
    """
    list:
    查询所有角色信息
    create:
    创建角色
    read:
    根据角色id,查询角色信息
    delete:
    根据角色id,删除角色
    update:
    根据角色id,更新角色信息
    partial_update:
    根据角色id,部分更新角色信息
    """
    queryset = Role.objects.filter(is_delete=0).all()
    serializer_class = RoleModelSerializer
 
    # 局部权限控制
    # permission_classes = [IsAuthenticated]
 
    # 精确过滤,/role_manage/roles/?name=媒体运营,无法模糊过滤
    # filter_fields = ['name']  # INSTALLED_APPS需添加应用:'django_filters',否则报错
 
    # 模糊过滤,/role_manage/roles/?name=媒体,能模糊过滤
    filterset_class = RoleFilter  # 自定义角色过滤器
 
    # 局部分页,page_size=10:每页获取10条,page=1:获取第1页
    # /role_manage/roles/?page=1&page_size=10
    pagination_class = StandarPageNumberPagination

原文:https://blog.csdn.net/zhu6201976/article/details/83785128

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Django 1.8.2 文档Home | Table of contents | Index | Modules...
    轩辕小爱阅读 6,938评论 0 2
  • 模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚...
    riverstation阅读 6,318评论 0 8
  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 8,742评论 2 3
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 9,274评论 0 8
  • 一、Django框架前言知识: 1、C/S和B/S的区别: C/S结构软件:客户端/服务端软件,即客户端要自己下载...
    月下独酌123阅读 10,353评论 0 36

友情链接更多精彩内容