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

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

何为软删除 当你想对数据进行删除的时候,如果使用物理删除,那么数据真的消失了。使用软删除,可以让数据保留,但是不会被真的删除。只是在字段上设置了一个值,表示数据已经被删除。...需要解决的问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...简而言之: drf找不到删除的数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django的模型(Model)中操作数据库的能力...也就是如:Book.objects.all()中的objects。有没有想过它到底是什么? 显然,默认的模型Manager并不能解决我们的问题,所以我们需要自定义模型的Manager。...@admin.register(Book) class BookAdmin(admin.ModelAdmin): pass 这是原来的模型注册,笔者进入admin.ModelAdmin中翻阅源码

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

    Django之ORM字段和参数

    ---- FileField           字符串(储存文件路径),Django Admin以及ModelForm中提供读取文件夹下文件的功能 关系字段 ---- ForeignKey     ...外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。    ...---- on_delete   当删除关联表中的数据时,当前表与其关联的行的行为。...models.SET_NULL 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值...默认为True。 ---- through      在使用ManyToManyField字段时,Django将自动生成一张表来管理多对多的关联关系。

    2.3K60

    ORM常用字段介绍

    关系字段 ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方。...on_delete 当删除关联表中的数据时,当前表与其关联的行的行为。...models.SET_NULL 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空) models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值...ManyToManyField 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系。 字段参数 to 设置要关联的表 related_name 同ForeignKey字段。...related_query_name 同ForeignKey字段。 symmetrical 仅用于多对多自关联时,指定内部是否创建反向操作的字段。默认为True。

    2.5K10

    【云+社区年度正文】Django从入门到精通No.2----模型

    FilePathField Select 一种 CharField ,限定只能在文件系统中的特定目录里选择文件。...help_text: 字段的提示信息 choices:显示选择框的内容,用不变动的数据放在内存中以避免跨表操作 verbose_name: 显示的字段名称 error_messages:自定义错误信息...to_field=None # 要关联的表中的字段名称 on_delete=None # 当删除关联表中的数据时,当前表与其关联的行的行为...(前提FK字段需要设为可空) - models.SET_DEFAULT 删除关联数据,与之关联的值设为默认值(前提FK字段设置默认值)...to_field=None # 要关联的表中的字段名称 on_delete=None # 当删除关联表中的数据时,当前表与其关联的行的行为 五、管理员登陆 为了能让大家提前看到

    2.1K00

    Django 系列博客(十三)

    Django 系列博客(十三) 前言 本篇博客介绍 Django 中的常用字段和参数。 ORM 字段 AutoField int 自增列,必须填入参数 primary_key=True。...数据库中字段的默认值 primary_key 数据库中字段是否为主键 db_index 数据库中字段是否可以建立索引 unique 数据库中字段是否可以建立唯一索引...数据库中字段【年】部分是否可以建立唯一索引 verbose_name Admin中显示的字段名称 blank Admin中是否允许用户输入为空 editable...Admin中是否可以编辑 help_text Admin中该字段的提示信息 choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作...on_delete 级联删除选项 ManyToManyField 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系。

    1.1K30

    Django-models & QuerySet API

    django中配置mysql数据库 查询queryset时如果需要选取查询集中的某个子集的字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集的字段,直接queryset后选择字段会直接报错...blank    为True时,admin中可以为空。但是不限制数据库,要想限制数据库里,需要设置null。 choices   选择框。...   默认都可以修改,如果为false,admin上面不可修改且不显示,但是数据库可以改 error_messages   自定义错误信息,是字典类型 help_text   该字段的提示信息 unique...:通过admin页面对数据进行增删改查 1,创建admin用户名密码 >python manage.py createsuperuser 2,在应用下admin.py中引入自身的models模块(或里面的类...删除学校,会把对应的学生也给删掉, 因为 on_delete= CASCADE。会删除包含foreignKey的学生对象。

    1.4K20

    Django模型

    Django模型 Django的模型定义在models.py文件中。模型是MVT中的M,也相当于MVC中的M。 在Django中,模型必须继承自Model类。...默认创建的主键列属性为id,也可以使用pk,意为primary key. 字段名称中不能出现双下划线,因为这是Django的查询语法之一。...,确保是有效的图片 下面是字段类型中的参数 字段类型的参数 参数 说明 null 如果为True,表示允许为空,默认值是False blank 如果为True,则该字段允许为空白,默认值是False...它的常用值可以如下: CASCADE级联,删除主表数据时连通一起删除外键表中数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据 SET_NULL设置为NULL...这是因为Django会默认指定另外一张表的id作为关联字段。如下图所示: 可以看到peopleinfo这张表中的外键名称是book_id

    1.9K20

    Django——模型Model

    ORM简介 对象关系映射(Object Relation Mapping)实现了关系和数据库之间的映射,隐藏了关系数据访问的细节,不需要再编写SQL语句 创建模型 在models.py的文件中创建类 继承...OK Django默认采用sqlite3数据库,最终会生成如下数据表,其中自定义的表命名规则是(应用名称模型类名) DATABASES = { 'default...# 删除关联表中的数据时,当前表与其关联的field的行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=models.DO_NOTHING...(前提FK字段需要设置为可空,一对一同理) # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值') on_delete...=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理) on_delete=models.SET, # 删除关联数据

    72950
    领券