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. mysq-5.7忘记密码修改

    一,停止mysql /etc/init.d/mysqld stop 二,启动mysql mysqld_safe --skip-grant-tables 安全模式+免验证启动服务 三,登入mysql服务 ...

  2. SpringBoot集成Spring Security(3)——异常处理

    源码地址:https://github.com/jitwxs/blog_sample 文章目录 一.常见异常二.源码分析三.处理异常不知道你有没有注意到,当我们登陆失败时候,Spring securi ...

  3. django实战(二)--带多字段模糊查询的分页(也是不容易)

    上节我们实现了分页功能,这节我们要实现对模糊查询后的结果进行分页.(引入了bootstrap框架) urls.py from django.urls import path from . import ...

  4. torch_09_GAN

    1.生成对抗网络 让两个网络相互竞争,通过生成网络来生成假的数据,对抗网络通过判别器判别真伪,最后希望生成网络生成的数据能够以假乱真骗过判别器 2.生成模型 就是‘生成’样本和‘真实’的样本尽可能的相 ...

  5. laravel框架中Job和事件event的解析

    本篇文章给大家带来的内容是关于laravel框架中Job和事件event的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做项目的时候,一直对Job和Event有个疑惑.感觉两 ...

  6. JAVA PTA 7-1 作品评分 (10 分)

    全国中小学生Scratch作品大赛拉开了序幕.每个参赛选手可以通过网络直接上传作品.本次比赛人人可做评委.每个网络评委可以通过网络对每一件作品进行打分.评分系统也是请程序高手设计的,能自动去掉一个最高 ...

  7. PostgreSQL事务特性之嵌套事务

    嵌套事务的实现是基于SAVEPOINT.ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT的,也就是设置一个保存点,可以回滚到保存点和释放保存点. 测试表的初始状态如下: ...

  8. 【linux】Too many open files 解决问题第一步【记录】

    记录一下解决linux上出现:Too many open files  的第一步骤. 做个记录,免得每次都查来查去的. 1.查看 ulimit -a 2.修改 vi /etc/security/lim ...

  9. set容器与map容器的简单应用

    set容器中一些函数,取自百度其他大佬已总结好的,如有侵权,请联系删除! set的各成员函数列表如下: c++ stl容器set成员函数:begin()--返回指向第一个元素的迭代器 c++ stl容 ...

  10. ASP.NET Core MVC上传文件

    使用模型绑定上传小文件 HTML代码: <form method="post" enctype="multipart/form-data" asp-con ...