创建表结构

from django.db import models

class Book(models.Model):
title=models.CharField(max_length=32)
publishDate=models.DateField()
price=models.DecimalField(max_digits=5,decimal_places=2) # 出版社可以发布多部书(一对多)
publish=models.ForeignKey('Publish') # 一个人可以写多本书,一本书也可以由多个人撰写(多对多)
authorList=models.ManyToManyField('Author') class Author(models.Model):
name=models.CharField(max_length=32)
age=models.IntegerField()
addr=models.CharField(max_length=32)
tel=models.CharField(max_length=13) class Publish(models.Model):
name=models.CharField(max_length=32)
addr=models.CharField(max_length=32)

2 urls配置

from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^index/', views.index),
]

5 测试数据

作者数据

出版社数据

书籍数据

4 编写views代码 

def index(request):
bookobj = models.Book.objects.all()
# 练习1: 查询人民出版社出版过的所有书籍的名字与价格(一对多)
# ret = models.Book.objects.filter(publish__name='山西出版社').values_list('title')
# ret = models.Publish.objects.filter(name='山西出版社').values_list('book__title','book__authorList__name')
# ret = models.Author.objects.filter(book__publish__name='山西出版社').values_list('book__title')
# 练习2: 查询egon出过的所有书籍的名字(多对多)
# ret = models.Book.objects.filter(authorList__name='alex').values_list('title')
# ret =models.Author.objects.filter(name='alex').values_list('book__title')
# 练习3: 查询人民出版社出版过的所有书籍的名字以及作者的姓名
# ret = models.Publish.objects.filter(name='机械先驱出版社').values_list('book__title','book__authorList__name')
# ret = models.Book.objects.filter(publish__name='机械先驱出版社').values_list('title','authorList__name')
# ret = models.Author.objects.filter(book__publish__name='机械先驱出版社').values_list('book__title','name')
# 练习4: 手机号以151开头的作者出版过的所有书籍名称以及出版社名称
# ret = models.Author.objects.filter(tel__startswith='158').values_list('book__title','book__publish__name')
# ret =models.Publish.objects.filter(book__authorList__tel__startswith='158').values_list('book__title','name')
# ret = models.Book.objects.filter(authorList__tel__startswith='158').values_list('publish__name','title')
# print(ret)
  return HttpResponse('OK')

  

ORM数据库查询操作之基于双下划线的跨表查询的更多相关文章

  1. (20)模型层 -ORM之msql 基于双下划线的跨表查询(一对一,一对多,多对多)

    基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Autho ...

  2. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  3. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  4. Django Mysql数据库-基于双下划线的跨表查询

    一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...

  5. django orm 基于双下划线的跨表查询

    一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...

  6. python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  7. (转)python 全栈开发,Day74(基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询)

    昨日内容回顾 # 一对多的添加方式1(推荐) # book=Book.objects.create(title="水浒传",price=100,pub_date="164 ...

  8. Django基础(5) ----基于双下划线的跨表查询,聚合查询,分组查询,F查询,Q查询

    一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...

  9. Django学习——图书相关表关系建立、基于双下划线的跨表查询、聚合查询、分组查询、F查询、Q查询、admin的使用、使用脚本调用Django、Django查看源生sql

    0 图书相关表关系建立 1.5个表 2.书籍表,作者表,作者详情表(垂直分表),出版社表,书籍和作者表(多对多关系) 一对一 多对多 本质都是一对多 外键关系 3.一对一的关系,关联字段可以写在任意一 ...

随机推荐

  1. 洛谷 P2446 [SDOI2010]大陆争霸 解题报告

    P2446 [SDOI2010]大陆争霸 题目背景 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭的神曾·布拉 ...

  2. Hcharts和Echarts----制作报表的工具

    Hcharts官网:https://www.hcharts.cn/Hcharts API文档:https://api.hcharts.cn/highcharts Echarts官网:http://ec ...

  3. JQuery学习一

    第一个JQuery程序 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he ...

  4. Sublime Text3 安装Markdown

    Sublime Text3是一款给力的文本编辑器,通过安装插件可以编辑Markdown文本,在编辑Markdown文本的同时可以实时预览编辑效果. 安装准备: 找到菜单栏:Preferences → ...

  5. 查看自己电脑外网IP

    连着wifi,在CMD窗口中显示的无线局域网适配器IP很有可能是内网IP.此时可以通过下面方法查看自己的电脑外网IP. 1.前提条件可以上外网: 2.上外网百度,输入IP,进行搜索. 3.查看结果即可 ...

  6. frame外弹出,刷新父页面

    //刷新父页面 function reflashParent() { var id = parent.tabbar.getActiveTab(); id = id.replace('tab','mai ...

  7. HDU1164

    //HDU 1164 //输入一个数(1<x<=65535) 转化为素数的乘积() #include "iostream" #include "cstdio& ...

  8. cookie与session的区别与应用

    通常我们所说的浏览器自动保存密码,下次不用登陆,提示一次就不再出现的内容,大部分通过cookie或者session来实现的. cookie的概念 cookie是浏览器(User Agent)访问一些网 ...

  9. CAS 逻辑流程图

  10. 一个App架构例子分析--UI层使用MVP模式;各层之间使用Otto实现通信

    一.这个App整体的架构划分: 分为四大模块:   1.app模块 2.common模块 3.domain模块 4.model模块     app模块的依赖: dependencies {     c ...