目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对一增删改记录 四.多对多增删改记录 1.多对多增加记录 2.多对多删除记录 3.多对多清空记录 4.多对多修改记录 五.基于对象的跨表查询--多次查询.子查询 正向查询和反向查询 1.一对一基于对象的跨表查询 2.一对多基于对象的跨表查询 3.多对多基于对象的跨表查询 六.基于双下划线的跨表查询 1…
一.创建多表模型 一对一:OneToOneField 一对多:ForeignKey 多对多:ManyToManyField 创建表时,会自动添加一个nid字段,并且自增,所以id可以不用手动创建 OneToOneField和ForeignKey会自动在后面加上" _id " ManyToManyField会自动创建第三张表 创建表的类,OneToOneField.ForeignKey和ManyToManyField中的to后的主表,1.如果用双引号包裹,那么创建主表的类在上在下都可以…
Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 方式1: 任意创建一个py文件,在该文件内书写固定的配置 import os if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject2.settings') import dj…
from django.test import TestCase # Create your tests here. import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings") import django django.setup() from app01 import model…
一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_class,on_delete=' ',options),第一个参数表示引用哪个模型,第二个参数表示如果外键引用的模型删除,该字段对应的的值应该怎么处理,第三个语法为其他字段参数. django ORM模型常用的on_delete的值 models.CASCADE:级联删除,即外键对应的那条数据删除了…
测试脚本配置 ''' 当你只是想测试django中的某一个文件内容 那么你可以不用书写前后端交互的形式而是直接写一个测试脚本即可 脚本代码无论是写在应用下的test.py还是单独开设py文件都可以 ''' # 测试环境的准备 去manage.py中拷贝前四行代码到测试文件 然后自己写两行 impor…
django models 在日常的编程中,我们需要建立数据库模型 而往往会用到表与表之间的关系,这就比单表取数据要复杂一些 在多表之间发生关系的情形下,我们如何利用models提供的API的特性获得需要的数据呢 ==我们先从对象和查询集说开去== 查询结果有时是对象/有时是查询集 我们只需要知道 ,只有get方法或者对查询集合进行切片,比如objects.all()[0] 或者 objects.all().first()等得到的是对象,其他得到的都是queryset 我们举个例子看下 # -*…
#====================================双下划线的跨表查询===============# 前提 此时 related_name=bookList 属性查询: # 查询linux这本书的出版社的地址? # linux_obj=models.Book.objects.filter(title="linux").first() # print(linux_obj.publish.name) # # # 查询老男孩出版社出版过的所有书籍的名字与价格 # #…
五.Django学习之基于对象的跨表查询 正向与反向查询 关键在于ForeignKey字段写的位置.例如下面这段代码, 关系属性(字段)写在哪个类(表)里面,从当前类(表)的数据去查询它关联类(表)的数据叫做正向查询,反之叫做反向查询 Publish查询Book的内容就是反向查询 Book查询Publish的内容就是正向查询 class Publish(models.Model): name=models.CharField( max_length=32) city=models.CharFie…
返回ORM目录 Django ORM 内容目录: 一. 基于对象的表查询 二. 基于双下划线的查询 三. 聚合查询 aggregate 四. 分组查询 annotate 一. 基于对象的表查询 1.正向查询 --> 意思是从含有外键表查询其外键对应的表的字段值 --> 正向查询容易推导 (1)查询书籍是三国演义的出版社邮箱 book_obj = models.Book.objects.filter(title='三国演义').first() 结果:123.qq.com (2)查询书籍是 活着…