1.

创建模型

一对多:

需要在""多""的表创建一个""关键字段"" 关联  就像在mysql的哪项少的比如(书与出版社之间在书之间创建一个关联字段public_id 对应着出版社的主键)

语法:在""多的"" 那边添加

     # 与Publish建立一对多的关系,外键字段建立在多的一方
publish=models.ForeignKey(to="Publish",on_delete=models.CASCADE)
#publish意味着publish_id 关联字段,无需添加id jdango自动添加
#,on_delete=models.CASCADE 级联删除
#to="Publish" 指向 少 的

一对多

多对多

在mysql中需要创建 一个共同的表,但是在django无需这样

注意:

 authors=models.ManyToManyField(to="Author")
#这里注意 ManyToManyField在django生成的是一个表(记住了)
book_author 表里面含有book_id author_id
这里无需加级联删除,因为只有一个

多对多

一对一

同一对多,唯一区别是 ""关联字段"" 是惟一的 unique

 ad=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)
这里OneToOneField 在django默认省略 unique 生成字段

一对一

创建

查询

 # 跨表查询,基于对象
from app01.models import Book,Publish,Author,AuthorDetail
# def books(request):
# 一对多添加
# 方式一 找出存储的出版社地址为条件,找到对象 然后将publish=找到的对象
# pub_obj=Publish.objects.filter(name="云南出版社").first()
# Book.objects.create(title="python",price="100",pub_date="2018-10-17",publish=pub_obj)
# 方式二 在对象里添加publish_id=对应的主键
# Book.objects.create(title="linux", price="100", pub_date="2018-10-17", publish_id=1)
# return HttpResponse("OK")
# 多对多添加
# 方式一 找到要把做作者加入书籍的书籍对象,然后在找到对应作者的主键(也就是找model对象),因为authors也是属性,
# 通过 book.authors.add把作者加入
# book=Book.objects.filter(title="css").first()
# alex=Author.objects.filter(name="alex").first()
# egon=Author.objects.filter(name="egon").first()
# 方式二 找到要把做作者加入书籍的书籍对象,然后通过book.authors.add() 加入对应的作者的主键数字
# book.authors.add(1,2)
# 方式三 当你取到的是一串列表的时候,需要一个个去,这里可以应用打散
# book.authors.add(*[1, 2]) ############查询
# 一对多
# 查询主键为1的书籍的出版社所在的城市
# 正向查询 找到主键为一的对象 再通过对象的属性publish 找出
# book_obj=Book.objects.filter(nid=1).first()
# book_obj是主键为1的书籍对象关联的出版社对象
# print(book_obj.publish.email)
# 找到云南出版社出版的书
# 反向查询
# publish_obj=Publish.objects.filter(name="云南出版社")
# print(publish_obj.book_set.all()) # 多对多
# 正向查询
# book=Book.objects.filter(title="python").first()
# ret=book.authors.all().values("age")
# print(ret)
# 反向查询
# alex=Author.objects.filter(name="alex").first()
# print(alex.book_set.all()) # 一对一 找对象 没有反向
# alex=Author.objects.filter(name="egon").first()
# print(alex.ad.addr) # ad=AuthorDetail.objects.filter(tel=123).first()
# print(ad.author.name) #
# return HttpResponse("OK")

创建,查询

django bms的更多相关文章

  1. Pyhon之Django中的Form组件

    Pyhon之Django中的Form组件   新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面 ...

  2. Django ORM那些相关操作

    一般操作 https://docs.djangoproject.com/en/1.11/ref/models/querysets/         官网文档 常用的操作 <1> all() ...

  3. Django Admin管理入门

    Django最强大的部分之一是自动管理界面.它从模型中读取元数据,以提供快速,以模型为中心的界面,受信任的用户可以在其中管理您网站上的内容.管理员的推荐用途仅限于组织的内部管理工具.它不是用于构建整个 ...

  4. Django的ORM那些相关操作

    一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <> all(): 查询所有结果 <> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 & ...

  5. Django之Orm的各种操作

    1.一般操作 ***必知必会13条*** <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 models.Cu ...

  6. Django学习笔记(7)——单表操作和多表操作

    单表操作 1,创建模型 创建名为book的APP,在book下的models.py中创建模型: from django.db import models # Create your models he ...

  7. Django REST framework框架介绍和基本使用

    Django REST framework介绍 Django REST framework是基于Django实现的一个RESTful风格API框架,能够帮助我们快速开发RESTful风格的API. 官 ...

  8. web框架开发-Django模型层(1)之ORM简介和单表操作

    ORM简介 不需要使用pymysql的硬编码方式,在py文件中写sql语句,提供更简便,更上层的接口,数据迁移方便(有转换的引擎,方便迁移到不同的数据库平台)…(很多优点),缺点,因为多了转换环节,效 ...

  9. django - 总结

    0.html-socket import socket def handle_request(client): request_data = client.recv(1024) print(" ...

随机推荐

  1. 第09组 Beta冲刺(5/5)

    队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 过去两天完成了哪些任务 文字/口头描述 学习 展示GitHub当日代码/文档签入记录 无 接下来的计划 无 还剩下哪些任务 s 答辩 遇到 ...

  2. oracle--报错 ORA-01003,ORA-09817,ORA-01075

    磁盘满了,删除旧文件,即可保证登入成功

  3. Django 数据库同步命令

    版本1.8.2 检查数据库配置是否有错 Python manage.py validate/check 创建对应书看的映射语句 Python manage.py makemigrations 同步或者 ...

  4. C#自定义特性的使用

    特性类的使用过程: 第一步:定义一个特性类,定义一些成员来包含验证时需要的数据:第二步:创建特性类实例:创建一个特性类的实例,里面包含着验证某一个属性或者字段需要的数据.将该实例关联到某个属性上面.第 ...

  5. 【2019年07月22日】A股最便宜的股票

    查看更多A股最便宜的股票:androidinvest.com/CNValueTop/ 便宜指数 = PE + PB + 股息 + ROE,四因子等权,数值越大代表越低估. 本策略只是根据最新的数据来选 ...

  6. kibana无法显示elasticsearch中的index

    我是用的logstash将kafka中的数据同步到elasticsearch.logstash和kafka在同一台服务器,elasticsearch在另外的服务器上. 经过排查,是因为我的logsta ...

  7. 一文搞定所有 web 自动化常见问题

    Firefox 1. Firefox路径问题 firefox火狐浏览器去完成自动化测试时,代码报了如下错误: Cannot find firefox binary in PATH. mark sure ...

  8. 面向对象之isinstance与issubclass(python内置方法)

    isinstanceissubclass TOC isinstance 判断一个对象是否是另外一个类的实例,返回布尔值. 是:True 否:False class Foo: pass class Bo ...

  9. Docker修改已创建容器端口映射

    修改已创建容器端口映射. 通过编辑 hostconfig.json 文件来修改 Docker 容器的端口映射 该文件地址:/var/lib/docker/containers/[hash_of_the ...

  10. struts2被淘汰的原因

    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个Servlet.在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互.Struts2 ...