系列文章目录
备注:这里是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提供了大量能使我们快速便捷地处理数据的函数和方法。