django中实现逻辑删除[通俗易懂]

django中实现逻辑删除[通俗易懂]django中实现逻辑删除,主要分三步:1.增加字段:is_delete=models.BooleanField(default=False,verbose_name=’逻辑删除’,help_text=’逻辑删除’)2.重写models中delete方法:defdelete(self,using=None,keep_parents=False):    ""…

大家好,又见面了,我是你们的朋友全栈君。

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://javaforall.net/146224.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python游戏代码200行_python 贪吃蛇

    python游戏代码200行_python 贪吃蛇python语言,总所周知是比较简单的,而且代码也不会像java那样多,下面就使用python的第三方库pygame进行开发一个贪吃蛇游戏。1.pygame的安装直接在cmd当中使用pipinstallpygame进行安装。或者在pycharm当中自动导入安装也OK2.全局变量的定义在代码当中会使用到很多这种变量的值,直接在最开始进行定义,后面获取变量即可W=600#屏幕宽H=400#高fps=12#帧率size=(W,H)ROW=

    2022年8月11日
    5
  • 解决WinSCP连接kali linux被拒绝的问题

    解决WinSCP连接kali linux被拒绝的问题在kali终端里输入:servicesshrestart,然后再使用WinSCP连接即可。

    2022年9月17日
    0
  • 宽带猫改成桥接模式_电信光猫路由模式

    宽带猫改成桥接模式_电信光猫路由模式目前大多数家庭宽带默认是在光猫直接拨号上网的,如果你想要改为自己的路由器拨号比较麻烦,需要光猫的超级管理员账号才可以进后台修改,但是光猫的超级管理员账号会被运营商远程修改,一般也不会告诉用户,最简单的方式就是打电话给装维师傅,让他帮你把光猫修改为桥接模式,但是最近好多地方的运营商不给修改了,理由是目前的光猫都是智能光猫,业务自动下发的,无法修改,今天就教你修改光猫为桥接模式,而且不让运营商远程修改超级管理员密码,下面以移动光猫吉比特HG6543C4为例演示,其他光猫同理。1.找到光猫背面的设备i信息(管理地

    2022年10月8日
    0
  • mac系统连接android电话

    mac系统连接android电话

    2022年1月6日
    59
  • 腾讯课堂下载回放视频课程记录_腾讯课堂回放下载

    腾讯课堂下载回放视频课程记录_腾讯课堂回放下载腾讯课堂下载回放视频对于爱学习的童鞋来说,能把腾讯课堂上的视频下载下来,随时随地听课,那该有多好啊!但是,腾讯课堂采取了多种加密措施,导致下载视频难上加难……要想下载视频,必须分为两部分进行,先获取视频的m3u8地址,然后用m3u8地址下载视频。第一步,获取视频m3u8地址:下面用两款热门浏览器:360安全浏览器和谷歌浏览器进行演示。①360浏览器:…

    2025年7月24日
    1
  • int和int32的区别_int是16位还是32位

    int和int32的区别_int是16位还是32位Int16值类型表示值介于-32768到+32767之间的有符号整数。Int32值类型表示值介于-2,147,483,648到+2,147,483,647之间的有符号整数。Int64值类型表示值介于-9,223,372,036,854,775,808到+9,223,372,036,854,775,807之间的整数。———————…

    2022年9月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号