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

系列文章目录

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

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


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

文章目录

  • 系列文章目录
  • 前言
  • 一、Django模型:查询数据
    • 1.1 关联关系表中查询数据
      • 1.1.1 扩展表名称需要小写,查询关联数据
      • 1.1.2 通过外键,查询关联数据
  • 二、新增数据
    • 2.1 在`一对一`或者`一对多`的关系表场景下,新增数据
      • 2.1.1 使用save()方法-新增数据
      • 2.1.1 使用create()方法-新增数据
        • 2.1.1.1 使用create()方法-新增数据:外键字段=Model类字段=关联表的一条数据对象
        • 2.1.1.2 使用create()方法-新增数据:外键_id= '关联表的id值'
      • 2.1.2 使用2.2.1与2.2.2 的区别在于:新增数据时,外键是赋值给Model类的`外键字段?`or `外键_id?`
    • 2.2 在``多对多`的关系表场景下,新增数据
      • 2.2.1 场景1:使用models.ManyToManyField()
      • 2.2.2 场景2:直接在Models中创建的中间表+使用models.ManyToManyField()
  • 三、更新数据:update、save、set
    • 3.1 使用update()方法进行数据更新,注意:update需要的类型是:queryset
    • 3.2 使用save()方法进行数据更新,注意:save()需要的类型是:obj
    • 3.3 使用set()方法进行关联表数据修改
  • 总结


前言

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

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   #扩展表名称需要小写

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

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

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

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

二、新增数据

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)

第二章(二):Django框架Model之ORM操作数据库:增、删、改、查_第3张图片
或者使用以下语句:

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()

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

注意:使用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 内容写得很详细,可以跳转参考。下面简单截图:
第二章(二):Django框架Model之ORM操作数据库:增、删、改、查_第5张图片
下面是第3张表在新增数据时,建立关系:
第二章(二):Django框架Model之ORM操作数据库:增、删、改、查_第6张图片

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

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

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

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

第二章(二):Django框架Model之ORM操作数据库:增、删、改、查_第7张图片
update批量更新,示例:
第二章(二):Django框架Model之ORM操作数据库:增、删、改、查_第8张图片

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

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

在这里插入图片描述

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


总结

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

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

你可能感兴趣的:(python之Web框架,数据库,#,MySQL,数据库,django,sqlite,mysql)