前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 数据库|models操作

Django 数据库|models操作

作者头像
98k
发布2018-04-13 17:58:31
5850
发布2018-04-13 17:58:31
举报
文章被收录于专栏:Django ScrapyDjango Scrapy

相关API 1.get(**kwargs)

解释:返回与筛选条件相匹配的Model对象,返回结果有且只有一个。

说明:如果符合条件的对象多于一个抛出MultipleObjectsReturned异常,如果没有找到抛出DoesNotExist异常

语法:ModelName.objects.get(itemName=itemNameValue)

例子:Author.objects.get(id=1)

2.all()

解释:查询所有结果(懒加载),当查询的时候并不真实发送sql语句,用的时候才会真的去查询

语法:ModelName.objects.all()

例子:Author.objects.all(id=1)

3.filter(**kwargs)

解释:包含了与所给的筛选条件相匹配的QuerySet

语法:ModelName.objects.filter(itemName=itemNameValue)

例子:Author.objects.filter(id=1)

4.exclude(**kwargs):

解释:包含了与所给的筛选件不匹配的QuerySet,于filter正好相反

语法:ModelName.objects.exclude(itemName=itemNameValue)

例子:Author.objects.filter(id=1)

5.order_by(*fields)

解释:对查询结果进行排序

语法:ModelName.objects.all().order_by("itemName")

例子:Author.objects.all().order_by("id")

6.reverse()

解释:对查询结果反向排序

语法:ModelName.objects.all().order_by("itemName").reverse()

例子:Author.objects.all().order_by("id")

7.distinct()

解释:对查询结果去重

语法:ModelName.objects.all().distinct()

例子:Author.objects.all().distinct()

8.values(*fields)

解释:返回一个ValuesQuerySet(一个特殊的QuerySet)

说明:运行后得到的不是一系列model的实例对象,而是一个可迭代的字段序列

语法:ModelName.objects.filter(name=value).values("name","name")

例子:Author.objects.filter(id=1).values("name","id")

9.values_list(*fields)

解释:与values相似只是返回的是一个元组

语法:ModelName.objects.filter(name=value).values_list("name","name")

例子:Author.objects.filter(id=1).values_list("name","id")

10.count()

解释:返回数据库中匹配查询的对象数量

语法:ModelName.objects.filter(itemName=itemNameValue).count()

例子:Author.objects.filter(name="xiaol").count()

11.first()/last()

解释:第一条记录/最后一条记录

语法:ModelName.objects.filter(itemName=itemNameValue).first()

例子:Author.objects.filter(name="xiaol").last()

关联查询:

方法:使用两个下划线(__)可以进行关联查询

例子:查询AutherDetail的信息

语法:AuthorDetail.objects.filter(id="2").values("sex","email", "author__name")

聚合查询:需要引入from django.db.models import *

方法:使用aggreagte关键字

用法:xxx.filter(查询条件).aggregate(别名=聚合函数('聚合字段'))

语法:Author.objects.filter(name="xiaol").aggregate(myCount=Count('id'))

分组查询:需要引入from django.db.models import *

方法:使用aggreagte关键字

用法:xxx.filter(分组字段).annotate(分组后操作)

语法:Author.objects.filter(name="xiaol").annotate(myCount=Count('id'))

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.04.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档