中篇介绍的是添加,下篇主要介绍查询

通过一个Book表的书的信息查询Publish表中出版社的信息

def addbook(request):
# Book.objects.create(name="linux运维",price=77,pub_date="2018-11-2",publish_id=2) # publish_obj=Publish.objects.filter(name="人民出版社")[0]
# Book.objects.create(name="GO",price=23,pub_date="2018-10-2",publish=publish_obj) book_obj=Book.objects.get(name="python")
print(book_obj.name)
print(book_obj.pub_date)
print(book_obj.publish.name)
print(type(book_obj.publish))
return HttpResponse("添加成功")

可以看见Book.obj.publish是一个对象,后面可以直接.属性获取相应的值。

如果要看一个出版社出版了多少书

def addbook(request):
# Book.objects.create(name="linux运维",price=77,pub_date="2018-11-2",publish_id=2) # publish_obj=Publish.objects.filter(name="人民出版社")[0]
# Book.objects.create(name="GO",price=23,pub_date="2018-10-2",publish=publish_obj) # book_obj=Book.objects.get(name="python")
# print(book_obj.name)
# print(book_obj.pub_date)
# print(book_obj.publish.name)
# print(type(book_obj.publish)) pub_obj=Publish.objects.filter(name="人民出版社")[0]
ret=Book.objects.filter(publish=pub_obj).values("name","price")
print(ret)
return HttpResponse("添加成功")

pub_obj是一个对象,获取到name是人民出版社的集合,取其中的第一个。此时表中只有一个人民出版社。

ret是找到publish对象为人民出版社的书的集合,取这些集合对象中的name和price的值。

由于此时Book表中每个出版社只有一本书,所以为了看到效果,在Book表中手动添加2本书书籍。

然后刷新http://127.0.0.1:8888/addbook/页面

会看见pycharm的Terminal窗口输出:

<QuerySet [{'name': 'GO', 'price': 23}, {'name': 'C++', 'price': 99}]>

可以看出,人民出版社出版了GO和C++两本书,是正确的。

第三篇-Django建立数据库各表之间的联系(下)的更多相关文章

  1. 第二篇-Django建立数据库各表之间的联系(中)

    上篇中已经建立了两个table,Book和Publish.这篇介绍如何用python增删改查数据库中的数据. 在views.py中创建一个index函数 from django.shortcuts i ...

  2. 第一篇-Django建立数据库各表之间的联系(上)

    多表操作(一对多) 遇到的问题: 执行python manage.py makemigrations后报如下错误 TypeError: __init__() missing 1 required po ...

  3. 2016/3/24 ①数据库与php连接 三种输出fetch_row()、fetch_all()、fetch_assoc() ②增删改时判断(布尔型) ③表与表之间的联动 ④下拉菜单 ⑤登陆 三个页面

    ①数据库与php连接   图表 header("content-type:text/html;charset=utf-8"); //第一种方式: //1,生成连接,连接到数据库上的 ...

  4. sql server DDL语句 建立数据库 定义表 修改字段等

    一.数据库:1.建立数据库 create database 数据库名;use 数据库名; create database exp1;use exp1; mysql同样 2.删除数据库 drop dat ...

  5. 备份和还原 第三篇:master 数据库的备份和还原

    在SQL Server 中,master 数据库记录系统级别的元数据,例如,logon accounts, endpoints, linked servers, and system configur ...

  6. day1_安装及建立数据库和表

    #第一份数据库及表create database library; use library; create table book( id int primary key, book_name char ...

  7. Kettle 实现mysql数据库不同表之间数据同步——实验过程

    下面是试验的主要步骤: 在上一篇文章中LZ已经介绍了,实验的环境和实验目的. 在本篇文章中主要介绍侧重于对Kettle ETL的相应使用方法, 在这里LZ需要说明一下,LZ成为了避免涉及索引和表连接等 ...

  8. 三、Django学习之单表查询接口

    查询接口 all() 查询所有结果,结果是queryset类型 filter(**kwargs) and条件关系:参数用逗号分割表示and关系 models.Student.objects.filte ...

  9. FastAPI 学习之路(三十四)数据库多表操作

    之前我们分享的是基于单个的数据库表的操作,我们在设计数据库的时候也设计了跨表,我们可以看下数据库的设计. class User(Base): __tablename__ = "users&q ...

随机推荐

  1. python爬虫之scrapy模拟登录

    背景: 初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML.json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录.例如知乎 ...

  2. scrapy几种反反爬策略

    一.浏览器代理 1.直接处理: 1.1在setting中配置浏览器的各类代理: user_agent_list=[ "Mozilla/5.0 (Windows NT 10.0; Win64; ...

  3. 在ASP.NET程序中用程序动态向<head>便签里添加<meta>标签

    在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta> ...

  4. Mysql Router 的集群

    1. c:\mysql-router, c:\mysql-5.7.23, 这两个目录的bin都要加入path 2. c:\mysql-shell,在bin下,有一个 mysqlsh.exe, 双击,打 ...

  5. github上传时出现error: src refspec master does not match any解决办法22

    1 error:src refspec master does not match any这个问题,我之前也遇到过,这次又遇到了只是时间间隔比较长了,为了防止以后再遇到类似问题,还是把这个方法简单记录 ...

  6. hdu1878-并查集,欧拉回路

    纯裸题..写着方便理解... 题意:判断一个无向图是否存在欧拉回路... 解题思路:并查集判断一下是否联通,然后再判断一下点的度数是否为偶数就行了: #include<iostream> ...

  7. 洛谷 P1160 队列安排

    题目描述 一个学校里老师要将班上 NNN 个同学排成一列,同学被编号为 $1-N$ ,他采取如下的方法: 先将 111 号同学安排进队列,这时队列中只有他一个人: 2−N2-N2−N 号同学依次入列, ...

  8. 创建iview框架的项目

    http://www.cnblogs.com/jf-67/p/8479176.html 在使用‘vue init webpack my-project’创建项目时,出现了错误 npm ERR! cod ...

  9. kubernetes 构架

  10. Girls and Boys HDU - 1068 二分图匹配(匈牙利)+最大独立集证明

    最大独立集证明参考:https://blog.csdn.net/qq_34564984/article/details/52778763 最大独立集证明: 上图,我们用两个红色的点覆盖了所有边.我们证 ...