values: 指定提取的数据库表中的字段值,如果不指定任何的字段名的话,默认情况下会提取所有的字段值。但是需要注意的是使用values返回的QuerySet对象中包括的是一个个的字典。

1.提取与Article形成映射关系的表article中的属性的所有值。示例代码如下:

def index7(request):
articles = Article.objects.values('title', 'content')
print(type(articles))
for article in articles:
print(article)
print(type(article))
return HttpResponse("success!")
输出结果如下:

<class 'django.db.models.query.QuerySet'>

{'title': 'Hello', 'content': '你好'}

<class 'dict'>

{'title': 'Hello World', 'content': '大家好'}

<class 'dict'>

{'title': '钢铁是怎样炼成的', 'content': '你好\r\n'}

<class 'dict'>

{'title': '中国吸引力', 'content': '精彩极了\r\n'}

<class 'dict'>

2. 提取与Article模型相关联的模型Category上的属性name的所有值。示例代码如下:
from django.http import HttpResponse
from .models import Article, Category def index7(request):
articles = Article.objects.values('title','category__name')
# 打印出articles的数据类型
print(type(articles))
for article in articles:
print(article)
# 遍历QuerySet中的每一篇文章,并且打印出其数据类型:字典类型
print(type(article))
return HttpResponse('success')
输出打印结果:

<class 'django.db.models.query.QuerySet'>

{'title': 'Hello', 'category__name': '最新文章\r\n'}

<class 'dict'>

{'title': '中国吸引力', 'category__name': '最新文章\r\n'}

<class 'dict'>

{'title': 'Hello World', 'category__name': '最热文章'}

<class 'dict'>

{'title': '钢铁是怎样炼成的', 'category__name': '高评分文章'}

<class 'dict'>

3. 如果想要为QuerySet中字典的键进行重新命名的话,就要使用到F表达式和关键字参数了,因为F表达式可以动态的获取字段的值。示例代码如下:
# 自定义的名字cate_name不能和Article模型上的属性相同
articles = Article.objects.values('title', cate_name=F('category__name'))
查看返回的结果如下:

{'title': 'Hello', 'cate_name': '最新文章\r\n'}

<class 'dict'>

{'title': '中国吸引力', 'cate_name': '最新文章\r\n'}

<class 'dict'>

{'title': 'Hello World', 'cate_name': '最热文章'}

<class 'dict'>

4. 在values()中也可以使用聚合函数形成一个新的字段,比如想要获取每个文章的销量。示例代码如下:
from django.db import F, Q

# 获取每篇文章的销量(阅读量)
articles = Article.objects.values('title', art_nums=Count('category__id'))
5. values_list():和values()用法相同,不同的地方就是,前者返回的是元组而后者返回的是字典。示例代码如下:
articles = Article.objects.values_list('title', Count('category__id'))
6. values_list(): 如果只传递一个字段名,这个是后再返回一个元组的话,就不太好了,可以通过指定falt=True,来使元组扁平化,拆分元组。示例代码如下:
articles = Article.objects.values_list('title', flat=True)
返回结果如下:

Hello

Hello World

钢铁是怎样炼成的

中国吸引力


需要注意的是, flat参数只能要用在values_list()中只传递一个字段的情况下

81.常用的返回QuerySet对象的方法使用详解:values和values_list的更多相关文章

  1. 82.常用的返回QuerySet对象的方法使用详解:all,select_related

    1. all: 返回这个ORM模型的QuerySet对象. articles = Article.objects.all() print(articles) 2.select_related: 查找数 ...

  2. 85.常用的返回QuerySet对象的方法使用详解:defer,only

    defer(),only(): 这两个方法都会返回一个"QuerySet"对象,并且这个"QuerySet"中装的是模型,不像values()和values_l ...

  3. 84.常用的返回QuerySet对象的方法使用详解:select_related, prefetch_related

    1.select_related: 只能用在一对多或者是一对一的关联模型之间,不能用在多对多或者是多对一的关联模型间,比如可以提前获取文章的作者,但是不能通过作者获取作者的文章,或者是通过某篇文章获取 ...

  4. 79.常用的返回QuerySet对象的方法使用详解: filter, exclude,annotate

    返回新的QuerySet的常用方法: 1.filter: 将满足条件的数据提取出来,返回一个新的QuerySet 以下所使用的模型article,category,定义模型models.py文件中,示 ...

  5. 80.常用的返回QuerySet对象的方法使用详解:order_by

    order_by: 将模型生成的表按照某个字段进行排序,默认情况下,按照升序的顺序排序,如果想要按照降序的顺序排序可以在字段的前面加一个"-",加一个负号就可以进行反转. mode ...

  6. asp.net中C#对象与方法 属性详解

    C#对象与方法 一.相关概念: 1.对象:现实世界中的实体 2. 类:具有相似属性和方法的对象的集合 3.面向对象程序设计的特点:封装  继承 多态 二.类的定义与语法 1.定义类: 修饰符 类名称 ...

  7. js对象浅拷贝和深拷贝详解

    js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具 ...

  8. 2020你还不会Java8新特性?方法引用详解及Stream 流介绍和操作方式详解(三)

    方法引用详解 方法引用: method reference 方法引用实际上是Lambda表达式的一种语法糖 我们可以将方法引用看作是一个「函数指针」,function pointer 方法引用共分为4 ...

  9. Underscore _.template 方法使用详解

    为什么用「void 0」代替「undefined」 undefined 并不是保留词(reserved word),它只是全局对象的一个属性,在低版本 IE 中能被重写. 事实上,undefined ...

随机推荐

  1. git 提取某次提交所修改的代码

    git 提取某次提交所修改的代码 应用场景 把分支A的某个功能抽到分支B中. 首先切换到分支B, 然后进行遴选(git cherry-pick). 如果没有冲突, 会自动合并然后使用原信息提交. 如果 ...

  2. P1006 换个格式输出整数

    这道题相较于上一题来说就简单了许多.看题. 怎么感觉这道题有点类似P1002写出这个数.流程差不多,思路大致是先求出每一位上的数,然后根据 百十个 的顺序输出结果.题目比较简单,不做赘述,贴代码 代码 ...

  3. 中兴获25个5G商用合同

    网易科技讯,6 月 25 日消息,在 2019 年 MWC 上海展期间,中兴通讯宣布随着全球首批 5G 规模商用部署展开,已在全球获得 25 个 5G 商用合同,覆盖中国.欧洲.亚太.中东等主要 5G ...

  4. Visual Studio Code 断点调试配置方法(请按我的步骤 一定可以做到)

    1 visual studio code 的 extentions 里安装插件 debugger for chrome2 devtool: 'eval-source-map', cacheBustin ...

  5. linux下安装mysql5.7(centos6.0)

    注:因为网络原因,这个mysql安装是我以前在学校的时候找到的一个安装包,不过也找到了下载的地址:http://www.itmop.com/downinfo/143061.html下载完成后,把文件上 ...

  6. cf 763B. Timofey and rectangles

    %%题解,脑洞好大啊. 四色定理什么鬼的..所以一定是yes. 因为矩形边长都是奇数,所以可以按左下角分类,一共4类,分别1,2,3,4就可以了. (需要4种颜色的情况大概就是4个矩形围起来一个矩形) ...

  7. SQL decode 函数的用法

    decode 函数基本语法: decode(字段|表达式,条件1,结果1,条件2,结果2,...,条件n,结果n,缺省值): --缺省值可以省略 表示如果 字段|表达式 等于 条件1 时,DECODE ...

  8. 吴裕雄--天生自然C++语言学习笔记:C++ 动态内存

    栈:在函数内部声明的所有变量都将占用栈内存. 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存. 可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存,这会返回所分配的空间地址.这种运 ...

  9. Elasticsearch 批处理

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  10. CF1209A Paint the Numbers

    You are given a sequence of integers a1,a2,…,an. You need to paint elements in colors, so that: If w ...