1008.Django模型基础03
一、关系表的数据操作
关系表中的数据操作

查看数据库中的表结构

一对多表关系数据的添加:
1. 第一种方式就是跟之前一样,用传参的方法添加,需要注意的是外键的值必须是关联表中已存在的值;
2. 第二种方式是用的属性赋值方式,因为我们在模型类有定义了一个department的属性,而这个属性的对象类型必须是department表的类实例对象。
from django.http import HttpResponse
from .models import Department, Student, Stu_detail, Course def test(request):
# 往department表里面插入数据
d1 = Department(d_name='文学院')
d1.save()
# 往student数据表里插入数据
s1 = Student(s_name='凯西', dept_id=1)
s1.save()
s2 = Student(s_name='小红')
s2.dept =d1
s2.save() return HttpResponse('xxxx')
二、表关联对象的访问

Student的模型类中我们有定义department属性,所以当我们去访问的时候,可以直接通过student.department的形式1去找到某个学生的所属学院是哪个。那么如果我们也希望在访问某个学院的实现对象的学生的时候,改怎么访问呢?

如果模型1有一个ForeignKey,那么该ForeigKey所指的模型2实例可以通过一个管理器回前面有ForeigKey的模型1的所有实例。默认情况下,这个管理器的名字为foo_set,其中foo是源模型的小写名称。

可以在定义时设置related_name参数来覆盖foo_setd 名称。

处理关联对象的一些方法:
add(obj1, obj2, ...)添加的已经存在数据库的数据,添加一指定的模型对象到关联的对象集中。
1. d1.student的管理器有add的方法;
2. 例子中的s2能添加成功是因为设置了student表中department字段允许为空了。

三、多表查询
Django提供一种强大而又直观的方式来“处理”查询中的关联关系,它在后台自动帮你处理JOIN。若要跨越关联关系,只需使用关联的模型字段的名称,并使用双下划线分隔,直至你想要的字段:
# 查询学院名字为“计算机学院”的学生的信息
Student.objects.filter(department__d_name='计算机学院')
它还可以反向工作。若要引用一个“反向”的关系,只需要使用该模型的小写的名称。
# 查询学生名字中包含“小”的学生的学院信息
Department.objects.filter(student__s_name__contains='小')

1008.Django模型基础03的更多相关文章
- Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)
Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...
- Django 07 Django模型基础2 (常用查询和多表关联)
Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- 六、Django模型基础第一节
1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...
- Django 学习第六天——Django模型基础第一节
一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...
- 九.django模型基础(三)之关联对象操作及多表查询
Ⅰ.关系表的数据操作 1.正向 正向:如果一个模型有外键字段,通过这个模型对外键进行操作叫做正向. 1)更新(增) a.通过属性复制 b.通过主键的方式 总结: ForeignKey 字段的更新,跟普 ...
- 七、Django模型基础第二节——常用查询
1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...
- django模型基础(三)
本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...
- Django 学习第八天——Django模型基础第三节
一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...
- Django 学习第七天——Django模型基础第二节
User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...
随机推荐
- SVN创建自己的版本库
1.创建版本库 第一:新建文件夹 第二:将新建文件与SVN建立关联(创建版本库) 直接选择OK 点击确定后文件夹图标也换了 该下的信息就是用来协助我们存储数据的(不是数据) 2.获取SVN库中的数据并 ...
- SPI接口(续二)
接下来看SPI接收器数据寄存器RXDAT,下表是它的全部位结构,其地址分别为0x40058014(SPI0).0x4005C014(SPI1). (1)第0到15位(RXDAT)为接收器数据,它包含接 ...
- 打卡node day07--图片上传,身份验证
multer 模块 github:https://github.com/fanlina157/nodePro npm i multer fileRouter.js var express = req ...
- 【剑指Offer】【数组】顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1 ...
- C#连接数据库实现开发图书管理系统操作代码
//客户端登录界面(Form1.cs窗口体系) using System; using System.Collections.Generic; using System.ComponentModel; ...
- 原生JS点击显示/隐藏
代码实现 HTML <div class="box box1"> <div class="btn"> <span onclick= ...
- mongoengine模型字段非严格校验FieldDoesNotExist
背景 最近需要从mongoDB中查询数据用于数据分析,一开始就用了pymongo后来发现使用起来很不方便,后面了解到有类似SQLAlchemy的ORM模块mongoengine能够操mongo 简单看 ...
- js-3part-Javascript使用Ajax
getElementsByName使用方法如下是input标签,我们尝试从里面获取到csrf的value值. 这个csrf标签,是隐藏的,在浏览器页面element可以看到,在html源码里面,是看不 ...
- PostScript语言教程(六、图形变换)
6.1.坐标系变换 POSTSCRIPT图形操作是在一个坐标系中,这个坐标系被称为用户坐标系或用户空间,该坐标系独立于任何物理设备.POSTSCRIPT在用户空间中进行绘制,并将结果传输到特定的打印机 ...
- Delphi中var和out
var: 传递的是参数的地址 out: 以返回值的形式返回结果,类似函数的效果:可以实现一个函数返回多个值