Django 数据库|models操作

相关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'))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏星汉技术

HIVE内置函数

6786
来自专栏desperate633

浅谈程序设计中的位操作什么是位操作位操作的常用技巧位操作的应用,常见的算法题小结

位操作是一种很底层的操作二进制数据的方法,虽然比较难掌握,但是有时候却有更高的效率和难以名状的优雅感。而且,在面试或者笔试中,考察基本的位操作应用越老越普遍,所...

561
来自专栏lgp20151222

MySql 模糊查询

SQL模糊查询,使用like比较关键字,加上SQL里的通配符,请参考以下:  1、LIKE'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden...

881
来自专栏开发与安全

Mysql数据库学习(二):数据类型(数值类型 日期和时间类型 字符串类型)

数据类型 数值类型 日期和时间类型 字符串类型 ? 一、数值类型 整数 ? tinyint[M] [unsigned] [zerofill]   ...

2290
来自专栏blackheart的专栏

[C#1] 8-数组

1.数组概述 声明数组: //每个元素初始化为0,虽然数组元素是值类型,但是却是分配在托管堆中的; int[] myArray=new int[100]; //...

1927
来自专栏琯琯博客

排序算法-快速排序

排序算法-快速排序 <?php /** * 快速排序. * * @param array $value 待排序数组 * @param array $...

3468
来自专栏lgp20151222

js遍历 for-of

922
来自专栏PHP在线

php总结

php5.3新增魔术方法__invoke在对象实例化之后,像调用变量函数一样调用。 class testClass{ function __invoke(...

3349
来自专栏wym

Codeforces Round #483 (Div. 2) D. XOR-pyramid

For an array bb of length mm we define the function ff as

1261
来自专栏JetpropelledSnake

在Python中实现单例模式

有些时候你的项目中难免需要一些全局唯一的对象,这些对象大多是一些工具性的东西,在Python中实现单例模式并不是什么难事。以下总结几种方法: 使用类装饰器 ...

3096

扫码关注云+社区

领取腾讯云代金券