django中实现逻辑删除[通俗易懂]
django,实现,逻辑,删除,通俗易懂
2025-03-25 08:59:29 时间
大家好,又见面了,我是你们的朋友全栈君。
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.cn/146224.html原文链接:https://javaforall.cn
相关文章
- Django模板引擎中变量作为属性值调用
- Python项目52-Django封装支付宝支付
- Django的ORM操作-查询数据
- Django之文件上传
- Python进阶35-Django Auth组件
- Python进阶25-Django Web框架
- Django学习记录
- Python进阶37-smtp及Django发邮件
- django:Content-Disposition filename:日本語 pdf csv output
- 【Django | 开发】面试招聘信息网站(处理产品细节和权限&美化页面样式)
- django在docker环境中断点调试
- Django 使用 django-redis 作为缓存的正确用法,别忽略缓存的使用原则
- Python进阶26-Django 视图层
- pycharm django环境搭建_宝塔Linux怎么搭建asp程序
- Python进阶32-Django forms组件
- Django的聚合查询与原生操作
- centos7使用nginx+uwsgi部署python django项目
- Python进阶33-Django cookie和session
- Django-缓存内容
- 博客将 Django 1.11+ 升级到 Django 2.2+ 遇到的问题及规避方法