第二章(二):Django框架Model之ORM操作数据库:增、删、改、查

该文章详细介绍了Django框架中如何进行数据库操作,包括使用模型查询关联数据、通过save()和create()方法新增数据、以及update()和save()方法更新数据。特别强调了一对一、一对多和多对多关系中的数据操作,如外键的使用和多对多关系的建立。
摘要由CSDN通过智能技术生成

系列文章目录

备注:这里是Django系列文章的所有文章的目录

第一章(一) : Django框架之创建项目/应用/templates、连接MYSQL、配置日志LOGGING、启动django项目
第一章(二):Django框架的模式、路由、视图;
第一章(三):Django框架的视图函数、视图类的认识及常规使用;
第一章(四):Django框架的模板(DTL):变量、标签、模板过滤器、模板继承、配置模板文件(staticfiles)
第二章(一):Django框架的模型(Model)、ORM操作数据库


备注:欢迎查阅python之Django框架,如有疑问,欢迎评论,一定回复!!!


前言

提示:这里是本文要记录的大概内容:

Django查询数据、新增数据、修改数据、删除数据;其中,查询数据、删除数据场景不同方式不同。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Django模型:查询数据

数据查询主要使用all()、filter()、get()、values()、exclude()等方法,结合操作符,很是快捷。
参考:第二章(一):Django框架的模型(Model)、ORM操作数据库

1.1 关联关系表中查询数据

1.1.1 扩展表名称需要小写,查询关联数据

user=UserBaseInfo.objects.get(id=1)# 返回obj数据对象
user.userextrainfo.username   #扩展表名称需要小写

在这里插入图片描述

1.1.2 通过外键,查询关联数据

userx = UserExtraInfo.objects.get(id='1')
userx.user.username

在这里插入图片描述

二、新增数据

2.1 在一对一或者一对多的关系表场景下,新增数据

2.1.1 使用save()方法-新增数据

from app4.models import *
import django.utils.timezone as timezone
depart = DepartInfo()
depart.departname='技术部'
depart.createdate=timezone.now()
depart.save()

或者使用以下语句:

from app4.models import *
import django.utils.timezone as timezone
depart=DepartInfo(departname="技术部",createdate=timezone.now())
depart.save ()

2.1.1 使用create()方法-新增数据

参考Django框架(十二):Models之ORM对多表【一对多】的操作(增、删、改、查)

2.1.1.1 使用create()方法-新增数据:外键字段=Model类字段=关联表的一条数据对象
u=dict(username='刘老四',password='qwe4321',status='1',createdate=timezone.now(),depart= DepartInfo.objects.get(id='2'))
user=UserBaseInfo.objects.create(**u)

在这里插入图片描述
或者使用以下语句:

user=UserBaseInfo.objects.create(username='刘老四',password='qwe4321',status='1',createdate=timezone.now(),depart= DepartInfo.objects.get(id='2'))
2.1.1.2 使用create()方法-新增数据:外键_id= ‘关联表的id值’
u=dict(username='刘老四',password='qwe4321',status='1',createdate=timezone.now(),depart_id='2')
user=UserBaseInfo.objects.create(**u)

或者使用以下语句:

user=UserBaseInfo.objects.create(username='王老六',password='asd4321',status='1',createdate=timezone.now(),depart_id='2')

在这里插入图片描述

2.1.2 使用2.2.1与2.2.2 的区别在于:新增数据时,外键是赋值给Model类的外键字段?or 外键_id?

2.2 在``多对多`的关系表场景下,新增数据

2.2.1 场景1:使用models.ManyToManyField()

在这里插入图片描述

注意:使用models.ManyToManyField创建的【多对多】中间表,不可以像一般的表去create数据,因为这张表是ORM自动给创建的,不是你通过models创建的;

我们只能通过对象的方式,建立绑定关系;

  # 想要在中间表中建立book表与author表的多对多关系,
  # 不可以像一般的表去create数据,因为这张表是ORM自动给创建的,不是你通过models创建的;
  
     #第一步,获取book表中,你要绑定关系的书book_obj
     book_obj=Book.objects.get(id=2)#get()是一个对象
     
     #第二步,获取author表中,要绑定book_obj的全部作者:author_objs
     author_objs=Author.objects.filter(name__in=["alex","zhangs"])#这是一个queryset
     
     #第三步,使用【对象.外键属性】获取对象集合,再add(),注意:这里authors是在Book中建立的(如上面截图)。
     book_obj.authors.add(*author_objs)#注意:1.book_obj是一个对象,不能是queryset哦;2.这里添加1个数据则不用添加*;如果是多个数据的集合,就需要添加*

2.2.2 场景2:直接在Models中创建的中间表+使用models.ManyToManyField()

Django框架的模型(Model)、ORM操作数据库 《--------里面的2.3.1 内容写得很详细,可以跳转参考。下面简单截图:
在这里插入图片描述
下面是第3张表在新增数据时,建立关系:
在这里插入图片描述

三、更新数据:update、save、set

更新数据可以使用 save()方法或者 update()方法。更新数据是:先查询数据,之后对查询出的数据进行修改,最后进行保存。

3.1 使用update()方法进行数据更新,注意:update需要的类型是:queryset

u = UserBaseInfo.objects.filter(id='9').update(username='zhangsan1')

在这里插入图片描述
update批量更新,示例:
在这里插入图片描述

3.2 使用save()方法进行数据更新,注意:save()需要的类型是:obj

u = UserBaseInfo.objects.get(id='9')
u.username='zhangsan'
u.save()

在这里插入图片描述

3.3 使用set()方法进行关联表数据修改


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值