首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django优雅的实现软删除,支持Admin和DRF的软删除

何为软删除 当你想对数据进行删除的时候,如果使用物理删除,那么数据真的消失了。使用软删除,可以让数据保留,但是不会被真的删除。只是在字段上设置了一个值,表示数据已经被删除。...同样的,DRF对外操作的其他接口,如查询,修改操作,就不允许找到已经软删除的数据。 自带的Admin 既然是超级管理后台,那么就允许操作任何数据,包括已经软删除的,而不是列表找不到软删除的数据。...后台执行删除操作的时候,实际上是对数据进行软删除。...简而言之: drf找不到删除的数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django的模型(Model)中操作数据库的能力...其实你在项目中无时不刻不在使用Manager,还记得objects吗?也就是如:Book.objects.all()中的objects。有没有想过它到底是什么?

2.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django模型中有外键关系的表删除相关设置

    0904自我总结 django模型中有外键关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...,详情删除作者保留 2)作者找详情用 外键related_name(detail),详情找作者用 外键字段(author) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作...', db_constraint=False, on_delete=models.DO_NOTHING, ) 1)关系字段放在Book表中(多的一方...关联表内容删了,关联的相关内容不会删除 models.CASCAD关联表内容删了,关联的相关内容会删除 db_constraint关系断开后,但是不影响联表查询 四.多对多关系 例如Book、Author...,但关系表一定级联删除 2)正向找 外键字段,反向找 外键字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联

    3K20

    Django与多个数据库交互

    定义数据库 在Django中使用多个数据库的第一步是告诉Django您将要使用的数据库服务器。 数据库可以有您选择的任何别名。但是,别名 default 有着特殊的意义。... 数据库,您可以使用这个: my_object.save(using='legacy_users') 如果不指定using,save()方法将保存到由路由器分配的默认数据库中。...将对象从一个数据库移到另一个数据库 如果您已将实例保存到一个数据库,再使用 save(using=...)作为将实例迁移到新数据库。如果您不采取适当的步骤,这可能会产生一些意想不到的后果。...') # 写入一个没有主键的p实例 或者使用force_insert来save(),以确保Django执行SQLINSERT: p = Person(name='Fred') p.save(using=...'first') p.save(using='second', force_insert=True) 选择要删除的数据库 默认删除实例对象作用的数据库 u = User.objects.using('legacy_users

    1.2K20

    Django 教程 --- Django CRUD

    Django基于MVT(模型视图模板)体系结构,并围绕CRUD(创建,检索,更新,删除)操作展开。最好将CRUD解释为构建Django Web应用程序的一种方法。...检索 –以列表的形式(列表视图)读取,检索,搜索或查看现有条目,或详细检索特定的条目(详细视图) 更新 –更新或编辑数据库表中的现有条目 删除 –删除,停用或删除数据库表中的现有条目 Django CRUD...考虑一个名为的项目,其中geeksforgeeks有一个名为的应用geeks 在拥有一个项目和一个应用程序之后,让我们创建一个模型,我们将通过我们的视图创建其模型。...删除检视 删除视图是指从数据库中删除表的特定实例的视图(逻辑)。它用于删除数据库中的条目,例如,删除geeksforgeeks上的文章。...,用于确认用户是否要删除实例。

    2K10

    一日一技:如何让Django 的app migration重新与数据库同步

    今天的文章,没有用过Django的同学可能难以理解我在说什么。但是如果你被Django的migration折腾过,那么你一定会感谢这篇文章。...当我们使用Django + MySQL开发网站服务的时候,我们应该始终使用Django来管理数据库,无论是增加字段,删除字段,修改字段,都应该直接修改Django工程 app里面对应的 models.py...但这种理想的情况有时候会被打破。我最近遇到了这样一种情况: 出于安全考虑,我把线上的MySQL数据库禁用了 drop的权限。...数据库经过人工修改,看起来像是把所有migration都执行完的样子,但实际上最后4步是通过执行SQL语句手动创建的。 如果不增删改新的字段,那么到目前为止不会有什么问题。...manage.py showmigrations app_name #删除app-migrations下除__init__.py的其他文件 #执行makemigrations,程序会再次为这个app

    4.1K51

    Django 教程 --- Django中的视图

    考虑一个名为的项目,其中geeksforgeeks有一个名为的应用geeks 之后,你有一个项目,准备好了,我们可以创建一个视图geeks/views.py, # import Http Response...基于功能的视图通常分为4种基本策略,即CRUD(创建,检索,更新,删除)。CRUD是用于开发的任何框架的基础。 基于功能的视图示例– 让我们创建一个基于函数的视图列表视图以显示模型的实例。...让我们创建一个将通过视图创建实例的模型。...类似地,基于函数的视图可以使用用于创建,更新,检索和删除视图的逻辑来实现。...Django CRUD(创建,检索,更新,删除)基于功能的视图:- 创建视图–基于函数的视图Django 细节视图–基于函数的视图Django 更新视图–基于函数的视图Django 删除视图–基于函数的视图

    3K30

    后端框架学习-Django

    ** ········································· from django.db.models import F 一个F对象代表数据库中某条记录的字段的信息(不直接取出来...) 作用:通常对数据库字段值在不获取的情况下进行操作,用于类属性之间的比较 F(‘列名’) 对数据库字段值在不获取的情况下进行操作: 例:需求:将Book表中所有的market_price全部自增...但浏览器存储不是十分安全,因此引入了session。...意义:视图渲染有一定成本,数据库的频繁查询过高;所以对于低频变动的页面可以考虑使用缓存技术,减少实际渲染次数;用户拿到响应的时间成本会更低。...= '*******'# 指的是授权码 EMAIL_USE_TLS = False # 与SMTP服务器通讯时,是否启动TLS连接(安全链接)默认为False,安全协议比较耗时 发送: from django.core

    9.6K40

    Django 权限

    管理(二) Group Permission 管理 权限验证(一) 权限验证(二) 权限验证(三) 权限验证(四) 什么是权限管理 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源...Web 权限 在 Web 里权限管理是 Web 应用项目中比较关键的环节,因为浏览器是每一台计算机都已具备的,如果不建立权限管理系统,那么一个“非法用户”可以轻而易举通过浏览器访问Web应用项目中的所有功能...Django 权限机制 Django 权限机制能够约束用户行为,控制页面的显示内容,也能使 API 更加安全和灵活;用好权限机制,能让系统更加强大和健壮 Django 用 user, group 和...,那么 A 能修改model B 的所有实例(objects)。...user.user_permissions.clear() #清空权限 # 注:上面的 permission 为 django.contrib.auth.Permission 类型的实例 # 示例演示

    1.1K10

    【Django】 开发:Cookie、Session和缓存

    expires: 具体过期时间 当不指定 max_age 和 expires 时,关闭浏览器时此数据失效 删除 COOKIE HttpResponse.delete_cookie(key) 删除指定的...cookie # 删除浏览器键为 my_var1的cookie responds = HttpResponse("已删除 my_var1") responds.delete_cookie('my_var1...clearsessions 【该命令可删除已过期的session数据】 Cookies vs session 存储位置: C- 浏览器中 s- 服务器中【mysql】 安全性: C - 不安全...s- 相对安全一些 不管C还是S , 不要存储敏感数据 【密码】 缓存 什么是缓存?...视图渲染有一定成本,对于低频变动的页面可以考虑使用缓存技术,减少实际渲染次数 案例分析 from django.shortcuts import render def index(request):

    1.9K20

    Django Admin后台管理:高效开发与实践

    查看、编辑和删除记录:点击列表中的记录,可以查看详细信息并进行编辑或删除操作。 通过这一章的学习,你将对Django Admin有基本的了解,并能够开始使用它来管理你的数据模型。...认证后端:Django允许定义多个认证后端,用于验证用户凭据。 权限和授权:Django的权限系统基于对象,允许为每个对象实例设置权限。...用户模型:Django提供了一个默认的用户模型,包含用户名、密码和电子邮件等字段。 3.2 用户、组和权限的管理 用户管理:在Django Admin中,可以创建、编辑和删除用户。...3.4 高级权限控制 对象权限:Django允许为模型的每个实例设置权限,这可以通过编写自定义权限类来实现。...这些知识对于构建安全、可扩展的Web应用程序至关重要。后续章节将进一步探讨如何结合Django的其他功能来构建复杂的应用程序。

    26010

    【Django 2.2文档系列】Model 外键中的on_delete参数用法

    场景 我们用Django的Model时,有时候需要关联外键。关联外键时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外键关联的对象。...比如:用户的有一个外键关联的是用户的健康记录表,当用户删除时,配置了这个参数的健康记录表中跟这个用户有关的数据也会被删除。...提醒:级联删除不会调用model级行为,但是会为所有已删除对象发送pre_delete和 post_delete信号,有用Django的信号机制的场景,要考虑这个级联删除带来影响。...models.SET()将SET()设置的值作为外键的值 ,如果传递了callable,则调用它的结果。 DO_NOTHING不采取行动。

    2K10

    Django项目在Linux服务器上部署和躺过的坑

    添加python软链接 将原来的链接备份 mv /usr/bin/python /usr/bin/python.bak 添加python3的软链接 ln -s /root/Py37/bin/python3.7...18 daemonize = /home/my_project/django_demo/run.log 19 20 #表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满 21 disable-logging...hosts 加入映射关系即可   Uwsgi + Nginx的部署 上面是uwsgi的启动方式,一般不考虑安全、负载均衡和代理的话,就不需要结合nginx来部署。...[root@localhost nginx]# cp nginx.conf nginx.conf.bak  3.配置nginx,这里是关键,然后打开nginx.conf,把原来的内容删除,直接加入以下内容...conf删除,将之前备份的重新弄一份,cp进去,然后配置一下之前的内容,配置文件里面的内容不正确很容易报错,注意一些细节,比如空格。

    2.1K20

    Django之ForeignKey和ManyToManyField多表查询

    只有在db_constraint=True时Django model才会在数据库上建立外键约束, 在该值为False时不建立约束. 默认db_constraint=True....A的实例可以通过关联字段访问与其关联的模型B的实例: >>> e = Entry.objects.get(id=2) >>> e.blog # Returns the related Blog object...如Entry.blog作为Blog的外键,默认情况下Blog.entry_set是包含所有参照Blog的Entry示例的查询集,可以使用查询集API取出相应的实例。...添加删除关联 因为ManyToManyField自动维护关联表,程序员不便于直接访问.ManyToManyField提供了API用于添加和删除关联(即through表中的记录)....= 0: user = users[0] 通过拥有关联字段的Flight实例进行添加关联操作: flight.reserve.add(user) flight.save() 删除操作与这类似:

    1.8K10
    领券