11.2 通过模型类实现关联查询

例:查询图书信息,要求图书关联的英雄的描述包含'八'。
BookInfo.objects.filter(heroinfohcommentcontains='八')
例:查询图书信息,要求图书中的英雄的id大于3.
BookInfo.objects.filter(heroinfoidgt=3)
例:查询书名为“天龙八部”的所有英雄。
HeroInfo.objects.filter(hbookbtitle='天龙八部')
通过多类的条件查询一类的数据:
一类名.objects.filter(多类名小写
多类属性名条件名)
通过一类的条件查询多类的数据:
多类名.objects.filter(关联属性
一类属性名__条件名)

  1. 插入、更新和删除
    调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的
    插入和更新。
    调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除。
  2. 自关联

    自关联是一种特殊的一对多的关系。
    案例:显示广州市的上级地区和下级地区。
    地区表:id, atitle, aParent_id;
    mysql终端中批量执行sql语句:source areas.sql;
  3. 管理器
    BookInfo.objects.all()->objects是一个什么东西呢?
    答:objects是Django帮我自动生成的管理器对象,通过这个管理器可
    以实现对数据的查询。
    objects是models.Manger类的一个对象。自定义管理器之后Django不再帮我们生成默认的objects管理器。
    1) 自定义一个管理器类,这个类继承models.Manger类。
    2) 再在具体的模型类里定义一个自定义管理器类的对象。
    自定义管理器类的应用场景:
    1) 改变查询的结果集。
    比如调用BookInfo.books.all()返回的是没有删除的图书的数据。
    2) 添加额外的方法。
    管理器类中定义一个方法帮我们操作模型类对应的数据表。
    使用self.model()就可以创建一个跟自定义管理器对应的模型类对象。
    小结:
  4. 元选项
    Django默认生成的表名:
    应用名小写_模型类名小写。
    元选项:
    需要在模型类中定义一个元类Meta,在里面定义一个类属性db_table就可以指定表名。

转载于:https://blog.51cto.com/13517854/2315092

python课堂笔记之django-day02(11)相关推荐

  1. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  2. python课堂笔记之django-day01(2)

    模型类设计 在应用models.py中设计模型类. 必须继承与models.Model类. 1) 设计BookInfo类. 2) 设计HeroInfo类. Models.ForeignKey可以建立两 ...

  3. python课堂笔记之django-day02(7)

    字段属性和选项4.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由django的查询方式决定的. 3)定义属性时需要指定字段类型,通过字段类型的参数指定 ...

  4. 【python学习笔记:Django】3.生活需要仪式感——Hello World

    按部就班:一步一步走 亮剑:打开VsCode 打开之前创建的虚拟环境的文件夹 (我的是G:\DjangoTrain) CTRL+~打开终端,启动虚拟环境 要是启动虚拟环境库出错--Windows Po ...

  5. 马哥python课堂笔记_马哥-python-课堂笔记12-python核心数据类型及类型显示转换

    标签: python的核心数据类型(内置) 数字:int,long,float,complex(复数),bool(布尔型) 字符:str,unicode 列表:list 字典:dict 元组:tupl ...

  6. python 课堂笔记 420_一位初学Python同学的课堂笔记,仿佛看到当年的自己

    TempStr = input('请输入带有F/C的温度值:') if TempStr[-1] in ['F','f']:#TempStr[-1]表示字符串的倒数第一个字符 反向排列 C = (eva ...

  7. python课堂笔记课后练习(高琪400集第一季)

    背景:纯python小白一个,跟着视频学了学python,做做练习.如果有什么错误或者更好的办法,跪请大佬们和我分享~(持续更新) 1.#定义一个函数实现反向输出一个整数,如:输入3245,输出543 ...

  8. python课堂笔记手抄图片报_读书报手抄报图片大全

    导读:小编根据大家的需要整理了一份关于<读书报手抄报图片大全>的内容,具体内容: 书籍便是这种改造灵魂的工具.人类所需要的,是富有启发性的养料.而阅读,则正是这种养料.下面是小编为大家带来 ...

  9. python课堂笔记手抄图片_超简单又漂亮的手抄报图片

    办手抄报是一项综合性训练,它融作文.书法.绘画于一体,可以有效地提高学生的思维能力.写作能力和审美能力.小编为大家带来的超简单手抄报图片简单又漂亮,希望大家喜欢. 超简单手抄报的图片欣赏 超简单手抄报 ...

  10. python课堂笔记

    **print('------我爱鱼C工作室------') temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:") guess = int(temp) if g ...

最新文章

  1. 【剑指offer-Java版】25二叉树中和为某一值的路径
  2. 已解决:pod资源清单yaml中各字段详解
  3. 化工网站开发_西部地区鼓励投资化工(石化)项目征求意见发布
  4. pyecharts学习(part4)--pyecharts饼图
  5. 数据库临时表空间设置
  6. 区分大小屏幕_第一个Python程序——在屏幕上输出文本
  7. vs快速生成get set方法_怎么祛斑快速祛斑的方法是什么?Get正确的祛斑方法
  8. QQ动态头像和动态主页
  9. posix多线程有感--线程高级编程(线程调度以及优先级设置)
  10. PDF转CAD格式软件下载及使用教程
  11. quartus频率计 时钟设置_FPGA021 基于QuartusⅡ数字频率计的设计与仿真
  12. SWOT分析流程图模板分享
  13. 使用d2rq把mysql转化为rdf_D2RQ数据导出
  14. linux终端里面的光标很粗,怎么调细
  15. 每日一题——分发糖果
  16. 本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
  17. 计算机网络是计算机科学技术和结合的产物,计算机网络是计算机技术和什么
  18. web渗透测试----28、ARP欺骗
  19. 主机连接VMware虚拟机的配置过程
  20. foxmail发生RCPT错误

热门文章

  1. EC20模块GPGGA协议
  2. MATLAB点云重采样,PCL点云曲面重采样三种方法:上采样,下采样,均匀采样
  3. 51单片机点亮数码管,单片机学习的好的办法,单片机例子大全,单片机教程
  4. 网络传输协议都有什么
  5. 什么U盘启动盘制作工具是纯净版的,没有捆绑软件和广告的?
  6. 随机信号分析基础——基础篇(数字特征)
  7. VC++2010Express下载
  8. USB转串口,JLINK驱动安装(亲测有效)
  9. 计算机网络——报文格式
  10. TLS 各种加密套件