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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146224.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决「建议收藏」

    css设置按钮竖直方向居中_button内flex垂直居中竟然不居中的解决「建议收藏」问题描述按钮样式为图标+文字,在使用flex布局写垂直居中时,iphone7手机上文字和图标却没有居中,居左显示。代码如下(已精简):{{confirmButtonText}}…button{display:flex;align-items:center;justify-content:center;img{width:36px;height:36px;display:…

  • 数据库:MySQL 修改密码

    数据库:MySQL 修改密码1.改动数据库配置表编辑/etc/my.cnf,在配置表后方加入“skip-grant-tables”,意思是跳过跳过授权表,即不再坚定账号密码的正确性,使用servicemysqldrestart重启mysql,输入mysql-uroot-p,直接回车进入数据库命令行。2.更改密码MySQL5.7之前的版本修改密码使用的语句是:UPDATEuserSETPassword=PASSWORD(‘yourpassword’)whereUSER=’root’;5.7之

  • vbs远程木马_vbs 访问webservice

    vbs远程木马_vbs 访问webservicexp、2003开3389+非net创建管理用户+Shift后门+自删除脚本+提权VBS整理收集2010年12月07日  xp、2003开3389+非net创建管理用户+Shift后门+自删除脚本  vbsonerrorresumenext  constHKEY_LOCAL_MACHINE=&H80000002  strComputer="."  Se…

  • PHP程序员技术职业生涯,你是如何规划的?

    PHP程序员技术职业生涯,你是如何规划的?

    2021年10月23日
  • mysql econnreset_node使用knex连接mysql,每个小时大概率出现:read ECONNRESET?

    mysql econnreset_node使用knex连接mysql,每个小时大概率出现:read ECONNRESET?我有一个node程序每小时查询一次本地数据库马上再查询一次内网数据库,仅在查询内网数据库时出现readECONNRESET。使用npm库knex+mysql2连接数据库,knex配置如下(有使用连接池)require(‘knex’)({client:’mysql2′,connection:{host:’127.0.0.1′,user:’your_database_user’,pass…

  • mysql忘记密码解决方案及三种方式修改密码

    mysql忘记密码解决方案及三种方式修改密码mysql用户分为root用户(超级管理员,拥有所有权限)和普通用户,mysql服务器通过权限表来控制用户对数据库的访问,这些权限表存于root用户下的mysql数据库中。在使用mysql数据库过程中,往往需要修改密码的操作,下面介绍三种修改密码的方式:1、使用mysqladmin命令在命令行指定新密码mysqladmin-uroot-ppassword‘新密码’…

发表回复

您的电子邮箱地址不会被公开。

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