Python+Django框架学习(关联查询)

字段查询

微信截图_20240527110928.png

条件查询

1.  判等 exact
list.objects.filter(id=1),直接查询唯一ID
list.objects.filter(id__exact=1)此处的exact可以省略
2.包含查询 contains
Demo:查询脚本类型中包含‘脚本’的数据
list.objects.filter(L_name__contains='脚本')
3.查询以***开头 startswith
Demo:查询以“脚本”开头的数据
list.objects.filter(L_name__startswith='脚本')
4.查询以***结尾 endswith
Demo:查询以“脚本”结尾的数据
list.objects.filter(L_name__endswith='脚本')
5.查询不为空的字段名
Demo:字段名是L_name,查询这个字段,值为False查询不为空
list.objects.filter(btitle__L_name=False)
6.范围查询 in
Demo:查询id为1、4、5的数据
list.objects.filter(id__in=[1,4,5])
7.查询的比较运算符
gt:大于
Demo:查询id大于3
list.objects.filter(id__gt=3)
lt:小于
Demo:查询id小于3
list.objects.filter(id__lt=3)
gte:大于等于
Demo:查询id大于等于3
list.objects.filter(id__gte=3)
lte:小于等于
Demo:查询id小于等于3
list.objects.filter(id__lte=3)

F对象

作用:用于类属性之间的比较条件
使用之前需要导入from django.db.models import F
比如查询销售量大于下载量 L_sales_volume>L_site
list.objects.filter(L_sales_volume__gt = F(‘L_site’))
比如查询销售量大于下载量*2 L_sales_volume>L_site
list.objects.filter(L_sales_volume__gt = F(‘L_site’)*2)

Q对象

作用:用于查询时的逻辑条件
使用之前需要导入from django.db.models import Q
比如查询销售量不等于10 volume
list.objects.filter(~Q(volume=3))
比如查询销售量大于10且下载量大于10volume>site
list.objects.filter(Q(volume__gt=10) && Q(site__gt=3))
比如查询销售量大于10或下载量大于10volume>site
list.objects.filter(Q(volume__gt=10) || Q(site__gt=3))

排序查询

查询所有表的信息,按照id从小到大进行排序
list.objects.all()order_by('id')
查询所有表的信息,按照id从大到小进行排序
list.objects.all().order_by('-id')
把id大于3的表信息按销量从多到少排序显示
list.objects.filter(id__gt=3).order_by('-bread')
聚合函数

sum 求和
count 计数
avg 平均值
max 最大值
min 最小值

  1. aggregate:调用这个函数来使用聚合
使用前需先导入聚合类:
from django.db.models import Sum,Count,Max,Min,Avg
查询所有产品的数目
list.objects.aggregate(Count('id'))
查询所有销量的总和 volume
list.objects.aggregate(Sum(‘volume’))
查询销售最高的数据 volume
list.objects.all().aggregate(Max(‘volume’))
查询销售最低的数据 volume
list.objects.all().aggregate(min(‘volume’))
查询所有软件平均销售的数据 volume
list.objects.all().aggregate(avg(‘volume’))
count函数 还可以如下写法
查询所有产品的数目
list.objects.all().count()
统计大于10的销售量 volume
list.objects.filter(volume__gt = 10).count()
关联查询
作用:对查询结果进行聚合操作(等同数据库的聚合函数)
一对多的关联查询
查询图书id为1的所有英雄的信息。

    b = BookInfo.objects.get(id=1)
    b.heroinfo_set.all()

多对多的关联查询
查询id为1的英雄所属图书信息。

    h = HeroInfo.objects.get(id=1)
    a=h.hbook

通过模型类实现关联查询
查询图书,要求图书中英雄的描述包含'八'。Join

BookInfo.objects.filter(heroinfo__hcomment__contains='八')

例:查询图书,要求图书中的英雄的id大于3.

BookInfo.objects.filter(heroinfo__id__gt=3)

例:查询书名为“天龙八部”的所有英雄。

HeroInfo.objects.filter(hbook__btitle = '天龙八部')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容