django orm 数据查询详解
一 在django里面创建模型
from django.db import modelsclass Blog(models.Model):name = models.CharField(max_length=100)tagline = models.TextField()def __str__(self): # __unicode__ on Python 2return self.nameclass Author(models.Model):name = models.CharField(max_length=200)email = models.EmailField()def __str__(self): # __unicode__ on Python 2return self.nameclass Entry(models.Model):blog = models.ForeignKey(Blog, on_delete=models.CASCADE)headline = models.CharField(max_length=255)body_text = models.TextField()pub_date = models.DateField()mod_date = models.DateField()authors = models.ManyToManyField(Author)n_comments = models.IntegerField()n_pingbacks = models.IntegerField()rating = models.IntegerField()def __str__(self): # __unicode__ on Python 2return self.headline
1.2 数据库里面的结构
需要注意多对多的中间表
1.3 创建对象
from blog.models import Blog
这里需要注意 一定要对属性的名字写上 另外save方法有括号
1.3 创建外键对象并保存
这里需要注意 blog是外键 这里只能赋值给一个外键的对象 或者数字1 2 3 4(代表外键的 对方的ID)
e.headline="my2 bolg" e.body_text="test" e.pub_date=datetime.date.today() emod_date=datetime.date.today() e.n_comments=12 e.pingbacks=20 e.eating=10 e.blog=b ##这里需要特别注意 e.save()
e.blog=1 这种写法存疑
1.4 多对多
john = Author.objects.create(name="John") paul = Author.objects.create(name="Paul") george = Author.objects.create(name="George") ringo = Author.objects.create(name="Ringo") e.authors.add(john, paul, george, ringo)
注意这里的对应关系存储在中间表中
二 检索对象
1.2 这里注意必须用类名 不能使用 对象名!!!
2.2 过滤
这里注意 有2个下划线 django的固定语法
>>> Entry.objects.filter(pub_date__year=2019)
<QuerySet [<Entry: my1 bolg>, <Entry: my2 bolg>]>
exclude 排除
过滤的结果都是列表 可以继续链式过滤
1.3 上面返回的都是列表 可以用get方法返回单一的值
这里需要注意 如果查询不到会抛出异常,多余一个也会抛出异常
1.4 外键关联查询
>>> from blog.models import Blog,Entry,Author >>> >>> Entry.objects.filter(blog__name="Beatles Blog1") <QuerySet [<Entry: my1 bolg>]>
这里需要注意 可以通过blog(外键)找到对应的类 然后过滤属性 name="XXX"
反向关联
>>> Blog.objects.filter(entry__headline="my1 bolg") <QuerySet [<Blog: Beatles Blog1>]>
这里一定要注意 filter后面的 是 关联的 类 的小写 名称entry!!!!!!!!
多条件同时反向查询!! 这里一定要注意 返回值是Blog对象 entry只是作为查询的邦族条件
3 F表达式
例如,为了查找comments数目多于pingbacks数目的Entry,可以构造一个F()
对象来引用pingback数目,并在查询中使用该F()对象:
>>> from django.db.models import F >>> Entry.objects.filter(n_comments__gt=F('n_pingbacks'))
转载于:https://www.cnblogs.com/ZFBG/p/11348917.html
django orm 数据查询详解相关推荐
- mysql select详解_MySQL数据库 select 数据查询详解
数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可以根据用户提供的限定条件,从已存在的数据表中检索用户需要的数据.MySQL使用SELECT语句从数 ...
- Django学习笔记之Django ORM Aggregation聚合详解
在当今根据需求而不断调整而成的应用程序中,通常不仅需要能依常规的字段,如字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序.Djngo聚合就能满足这些要求. 以下面的Mode ...
- Django 模型层(models) 复杂查询详解
Django 模型层(models) 复杂查询详解 一般Django orm 和原生sql混合使用 1.测试文件 只单独测试django中的某一个py文件 不一定是tests.py 1.配置 在任意一 ...
- Django从理论到实战(part28)--ORM常用Field详解
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: ORM常用Field详解 AutoField 映射到数据库中是int类型,可以有自动增长的特性.一般不需要使用这个类型,如果 ...
- 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解
主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...
- django批量修改table_python中Django视图(view)的详解(附示例)
本篇文章给大家带来的内容是关于python中Django视图(view)的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一个视图函数(类),简称视图,是一个简单的Py ...
- 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...
- php视图查询的优势,ThinkPHP视图查询详解
搜索热词 ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表的视图模型,然后就可以通过该模型直接进行多表联合查 ...
- 怎么创建python django项目_创建Django项目图文实例详解
本文实例讲述了创建Django项目的方法.分享给大家供大家参考,具体如下: 创建Django项目 创建一个HelloDjango项目 GitHub地址:https://github.com/liang ...
最新文章
- DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测
- easyui form提交和formdata提交记录,查看FormData对象内部的值
- [dp]leetcode 198. House Robber
- numpy 数据类型与 Python 原生数据类型
- SQL注入如何进行攻击
- swift -懒加载创建view
- 页面JS实现按钮点击增加输入框
- 浙江大学公共管理学院与阿里云计算有限公司达成战略合作 | 凌云时刻
- grads插值_grads各类参数设置.pptx
- Java写入文件换行
- 手机投屏到电视的5种方法 看完才知道原来这么简单!
- 颈椎前路caspar撑开器_Caspar撑开器和颈椎带锁钢板治疗下颈椎骨折脱位
- 大风车音乐计算机,大风车歌曲
- 内盘外盘新手看热闹,老手在内盘外盘看门道
- 《MLB棒球创造营》:走近棒球运动·华盛顿国民队
- 浅谈自动化测试中的验证码处理方法小总结
- 分享8款令人惊叹的HTML5 Canvas动画特效
- 卸载计算机应用程序的步骤,图文教您win10系统快速卸载应用程序的具体步骤
- 雷达系统 学习笔记(四)——脉冲多普勒雷达1
- Java中的三种代理模式解释
热门文章
- 06-04 Jenkins 权限控制
- github ssh 配置_Git多用户配置
- python批量读取csv并入库pg_如何通读CSV然后在Python中发布批量API调用
- 中专计算机应用完整教学计划,中职生教学计划
- udp 协议阻断_应对UDP反射放大攻击的五种常用防护思路
- mysql 双向热备份_MySQL双机热备份
- php地址选择插件,微信小程序中关于三级联动地址选择器的实例分享
- win7 nginx php 环境,win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel开发环境
- 键盘向上箭头代码中怎么表示_Altium Designer中的快捷键汇总(收藏必备)
- c 取数组 最大值 算法_拜托,面试别再问我最大值最小值了!!!