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

通过一个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. 【git】如何去解决fatal: refusing to merge unrelated histories

    我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传. 先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法p ...

  2. Python基础知识2-内置数据结构(上)

     分类 数值型 用浮点型的时候注意别和"=="一起使用. 数字的处理函数 注意round()函数的特殊:四舍六入五取偶 类型判断 列表list 列表list定义 初始化 列表索引访 ...

  3. Netty ByteBuf和Nio ByteBuffer

    参考https://blog.csdn.net/jeffleo/article/details/69230112 一.简介 Netty中引入了ByteBuf,它相对于ByteBuffer来说,带来了很 ...

  4. Yii2总结

    1. Web访问流程(即在浏览器中输入一个网址至浏览器展现页面结果的过程) a. 将输入的网址提取出域名,在本地hosts文件中查找对应的IP地址(windows为C:/windows/system3 ...

  5. 工程师常犯的web后台界面用户体验错误

  6. linux 查看TCP端口

    如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ netstat –nat

  7. Mvc校验用户没有登录就跳转的实现

    看字面意思很简单,就是判断用户是否登录了,如果没有登录就跳转到登陆页面. 没错,主要代码如下(这里就不写判断登录了,直接跳转) 首先在控制器中新建一个BaseController public cla ...

  8. LODOP循环多任务 同模版只设置不同队列任务名

    LODOP中从PRINT_INIT(或PRINT_INITA)到最后PRINT(或PREVIEW等),是一个任务,关于Lodop中一个任务,以及一个任务中可以包含哪些语句,详细可查看本博客另一篇博文: ...

  9. Linux下 rewrite_mod 的配置

    以下使用最新的 Ubuntu 16.04 测试; 安装好apache后先确认有没有rewrite模块,大多数情况下是有的:ls /etc/apache2/mods-available |grep re ...

  10. 树&图 记录

    A - Lake Counting POJ - 2386 最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式 B - Paint it really, really dark gray Cod ...