一、关系表的数据操作

关系表中的数据操作

查看数据库中的表结构

一对多表关系数据的添加:

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的更多相关文章

  1. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  2. Django 07 Django模型基础2 (常用查询和多表关联)

    Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...

  3. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  4. 六、Django模型基础第一节

    1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...

  5. Django 学习第六天——Django模型基础第一节

    一.Django 的 ORM 简介: Django的ORM系统的分析: 1.ORM 概念:对象关系映射(Object Relational Mapping,简称ORM) 2.ORM的优势:不用直接编写 ...

  6. 九.django模型基础(三)之关联对象操作及多表查询

    Ⅰ.关系表的数据操作 1.正向 正向:如果一个模型有外键字段,通过这个模型对外键进行操作叫做正向. 1)更新(增) a.通过属性复制 b.通过主键的方式 总结: ForeignKey 字段的更新,跟普 ...

  7. 七、Django模型基础第二节——常用查询

    1 常用的模型字段类型 官方文档链接: https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types 常用的字段类型 模型字 ...

  8. django模型基础(三)

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/88084034 表关系 一对一(OneToOne) 通过本表的主键外键关联另一张表的主键 创 ...

  9. Django 学习第八天——Django模型基础第三节

    一.表关系的实现: 一对一:OneToOne(外键+唯一键) xxx = models.OneToOneField('关联的表',on_delete=models.CASCADE) 外键和一对一关系的 ...

  10. Django 学习第七天——Django模型基础第二节

    User 是自己创建的模型类,等于数据库中的表 常用的查询方法: all():获取所有数据: User.objects.all() first():获取第一条数据: User.objects.firs ...

随机推荐

  1. Flutter中的路由 路由替换 返回到根路由

    一.Flutter 中返回到上一级页面 Navigator.of(context).pop(); 二.Flutter 中替换路由 比如我们从用户中心页面跳转到了 registerFirst 页面,然后 ...

  2. 第6课第4节_Binder系统_驱动情景分析_服务注册过程_分析

    Service_manager.c 8074 2017/6/30 首先从应用程序分析(Android) binder_loop(bs, svcmgr_handler) { readbuf[0] = B ...

  3. SpringBoot 配置内部tomcat https双向验证

    1.在application.properties或者application.yml配置文件中加入 server: port: 8443 ssl: key-store: classpath:xxxx. ...

  4. /etc/login.defs 创建用户的默认设置文件

    /etc/login.defs 文件用于在创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度,等等.需要注意的是,该文件的用户默认配置 ...

  5. GIT 上传文件出错:fatal: Could not read from remote repository. 解决方案

    问题 git push -u origin master 执行后报错 fatal: Could not read from remote repository.  解决方案 1. git执行 git ...

  6. 【C学习笔记】day2-2 不允许创建临时变量,交换两个数的内容(附加题)

    #include<stdio.h> int main() { int a=0, b=1; int m[2]; m[0] = a; m[1] = b; a = m[1]; b = m[0]; ...

  7. 为什么JAVA中(byte)128结果为-128;(byte)-129结果为127

    为什么JAVA中(byte)128结果为-128;(byte)-129结果为127 在JAVA中默认的整型为int型,int型占4个字节,为32位.byte占一个字节为8位. JAVA中的二进制都是采 ...

  8. Docker--搭建 Python + Pytest +Allure 的自动化测试环境

    本文参考:https://www.cnblogs.com/poloyy/p/13954637.html 下载Jenkins镜像 docker search jenkins 推荐使用第二个:docker ...

  9. Software--Spring Boot--Contact 项目初期

    Spring Boot 简介 提供了四个主要的特性,能够改变开发Spring应用程序的方式: Spring Boot Starter : 将常用的依赖分组进行整合,将其合并到一个依赖中,可以以此行添加 ...

  10. linux 安装 sysbench 和 使用

    安装 执行 下载命令 curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | su ...