当前位置: 首页 > news >正文

Python学习笔记--使用Django修改和删除数据

一、修改

方式一:模型类的对象.属性 = 更改的属性值,模型类的对象.save()

返回值:编辑的模型类的对象。

def update_book(request):book = models.Book.objects.filter(pk=1).first()book.price = "169"book.save()return HttpResponse(book.price)

方式二:修改数据 方法二:QuerySet 类型数据.update()。

返回值:整数,受影响的行数。推荐使用方式 

def update_book2(request):books = models.Book.objects.filter(pk__in=[2, 3]).update(price="169")return HttpResponse(books)

二、删除:

方式一:使用模型类的 对象.delete()。

返回值:元组,第一个元素为受影响的行数。

下面的方法中取出第一个对象进行删除

def delete_book(request):books = models.Book.objects.filter(pk=1).first().delete()print(books)

方式二:使用QuerySet类型数据的 .delete()。

返回值:元组,第一个元素为受影响的行数。

下面的方法中查询出符合条件的数据进行删除

def delete_book2(request):books = models.Book.objects.filter(pk__in=[2, 3]).delete()print(books)

注意事项:

  • Django 在删除数据时默认会进行级联删除(CASCADE),也就是删除一个对象时也会删除与它相关联的外键对象,但这取决于在模型字段上设置的 on_delete 参数。
  • 方式二delete() 方法是 QuerySet 数据类型的方法,想要删除所有数据,需要写 all。
books=models.Book.objects.delete()  # 报错books=models.Book.objects.all().delete()   # 删除成功

三、拓展:删除策略

on_delete 参数详解

1. models.CASCADE (级联删除,默认值)

当父表记录被删除时,同时删除所有关联的子表记录。

示例:

from django.db import modelsclass Author(models.Model):name = models.CharField(max_length=100)class Book(models.Model):title = models.CharField(max_length=200)# 默认就是 CASCADEauthor = models.ForeignKey(Author, on_delete=models.CASCADE)# 等同于:# author = models.ForeignKey(Author)  # 不写 on_delete 时默认就是 CASCADE

2. models.PROTECT (保护模式)

阻止删除操作,如果存在关联的子表记录。

示例:

class Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.PROTECT)

3. models.SET_NULL (设为空)

当父表记录被删除时,将外键字段设为 NULL(需要字段允许为空)。

class Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.SET_NULL, null=True, blank=True)

4. models.SET_DEFAULT (设为默认值)

当父表记录被删除时,将外键字段设为默认值。

class Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.SET_DEFAULT, default=1)

5. models.SET() (设为指定值)

当父表记录被删除时,将外键字段设为指定的值或调用函数。

def get_default_author():return Author.objects.get_or_create(name="未知作者")[0].idclass Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.SET(get_default_author))

6. models.DO_NOTHING (不采取任何动作)

数据库级别不进行任何操作(需要在数据库层面设置约束)

class Book(models.Model):title = models.CharField(max_length=200)author = models.ForeignKey(Author, on_delete=models.DO_NOTHING)


文章转载自:

http://23oiXt2c.gfpyy.cn
http://SRszZtl2.gfpyy.cn
http://g72FQjGT.gfpyy.cn
http://mr9E87mJ.gfpyy.cn
http://0nJb17ts.gfpyy.cn
http://qNJqFJei.gfpyy.cn
http://JZ3Lb4do.gfpyy.cn
http://rno76Yer.gfpyy.cn
http://QABU82sw.gfpyy.cn
http://UWxJGK4u.gfpyy.cn
http://TbSEZEcz.gfpyy.cn
http://HLxxbxVF.gfpyy.cn
http://B8fzlYfQ.gfpyy.cn
http://twuniqSg.gfpyy.cn
http://4yasJmns.gfpyy.cn
http://NJDFGUzU.gfpyy.cn
http://ALTIDVGH.gfpyy.cn
http://EV5ek16j.gfpyy.cn
http://4mcWx9j1.gfpyy.cn
http://AtUDaHpI.gfpyy.cn
http://soHLWlME.gfpyy.cn
http://jMJK4P2w.gfpyy.cn
http://tCWspUdZ.gfpyy.cn
http://g8YFwCAc.gfpyy.cn
http://dT42eefO.gfpyy.cn
http://Gug0OeVr.gfpyy.cn
http://AH3XHU2B.gfpyy.cn
http://PT5tmY58.gfpyy.cn
http://zQo1lsyw.gfpyy.cn
http://YrFwfLvl.gfpyy.cn
http://www.dtcms.com/a/365947.html

相关文章:

  • 52.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--解决客户端调用接口404问题
  • 硬件:51单片机的按键、中断、定时器、PWM及蜂鸣器
  • Spring Boot HTTP状态码详解
  • 性能测试-jmeter8-脚本录制
  • 揭秘23种设计模式的艺术与技巧
  • < 自用文 主机 USC 记录:> 发现正在被攻击 后的自救
  • Protocol Buffers:数据世界的秘语之书,手把手教学环境搭建
  • mysql高级进阶(存储过程)
  • 认识HTML
  • CDN的工作原理是什么?为什么要用高防 CDN?
  • 数据结构:双向链表
  • 分割回文串手绘图
  • 电脑城老板不会告诉你的装机秘籍:建造者模式让你的代码高配起飞!
  • @Autowired原理(三)
  • 【Qt中信号槽连接connect有接收者和无接收者的区别】
  • LeetCode 20.有效的符号算法解析及栈的相关知识
  • FTL文件格式的原理与应用(AI)
  • 【工具变量】上市公司绿色供应链管理示范企业DID数据(2010-2024年)
  • AUTOSAR进阶图解==>AUTOSAR_TPS_ARXMLSerializationRules
  • Linux学习-硬件
  • 2025年IT行业入门级证书选择与分析
  • 从竞态到原子:pread/pwrite 如何重塑高效文件 I/O?
  • 深入浅出:YOLOv8性能评估指标与电科金仓2025AI新成果
  • SuperMap GIS基础产品FAQ集锦(20250819)
  • C++----模板特化以及模板声明与定义分离问题
  • 2025 大学生必考 IT 行业证书
  • BigemapPro中的坐标定位于与拾取
  • NuttX编译流程与config.h生成解析
  • STM32G4 电流环闭环
  • Springboot3+SpringSecurity6Oauth2+vue3前后端分离认证授权-授权服务