文档章节

django values(*field) values_list() 使用

jacked
 jacked
发布于 2015/10/14 01:00
字数 531
阅读 2140
收藏 0
点赞 1
评论 2

这个方法返回的是ValuesQuerySet,是QuerySet 的子类,也就是说,你可以用QuerySet里的方法。 需要注意的是,返回的不是list,不要直接当list来用了。对ValuesQuerySet遍历,每一个元素是“字典”dict。

当不传入参数时,返回这个model的所有字段

AppDef.objects.values()  [{'creator': u'admin', 'apptype_name': u'uc3g', 'apptype_chn_name': u'3G\u95e8\u6237', 'note': u'', ...},...]

当传入参数时,只会列出你指定的参数

AppDef.objects.values('apptype_name')  [{'apptype_name': u'uc3g'},...]

也可以加上filterfilter在前或者后面都是一样的

AppDef.objects.filter(pk=1).values('apptype_name') AppDef.objects.values('apptype_name').filter(pk=1)

如果想把关联的字段也一起查出来OneToOneField, ForeignKey 和ManyToManyField 关系的都可以。
ManyToManyField 在Django1.3版本后才支持   LogTypeDef定义了一个appForeignKey

LogTypeDef.objects.filter(pk=6).values('pk', 'app__apptype_name')  [{'pk': 6L, 'app__apptype_name': u'wapsearch'}]

如果你只想拿到app_id,可以这样,下面三种方法都是一样的,只是返回的结果名字对应你的查询语句

LogTypeDef.objects.filter(pk=6).values('pk', 'app_id')  LogTypeDef.objects.filter(pk=6).values('pk', 'app')  LogTypeDef.objects.filter(pk=6).values('pk', 'app__id')

注意在关联关系为多对多的时候,它只会帮你一条一条的列出来,而不会帮你合并为一个list
例如会返回类型的结果:同一个pk并不会帮你合并app_id

[{pk: 6, app_id: 2}, {pk: 6, app_id: 3}]

2. 注意事项

当同时使用distinct()和values(),需要注意order_by() (或者默认 model ordering) ,会自动加入select 中作为distinct项,所以返回的结果你以为是重复的,其实是order by的字段没列出来。
如果在extra() 之后用values(),一定要把extra用到的字段也加进来;如果extra()在values()之后,extra的字段会自动加进select。

3. Values_list

values一样,只是默认返回的不是字典而是元组;可以增加flat=True参数,返回某个字段的列表,例子如下:

Case_images.objects.filter(case=case_id).order_by('-created_time').values_list('url',flat=True)

 

© 著作权归作者所有

共有 人打赏支持
jacked
粉丝 0
博文 31
码字总数 4850
作品 0
朝阳
加载中

评论(2)

小狐濡尾
小狐濡尾

引用来自“z正小歪”的评论

太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
你们简直丧心病狂
z正小歪
z正小歪
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
太有用了~~~~哈哈哈哈
Django 1.11.3 发布,Python 的 Web 框架

Django 是一个高级的 Python Web 框架,旨在快速开发和简单,实用的设计。 Django 1.11.3 已发布,该版本修复了 1.11.2 中的一些 bug ,具体如下: Removed an incorrect deprecation warni...

王练 ⋅ 2017/07/03 ⋅ 5

Django数据库访问优化

原文地址(the5fire的博客):http://www.the5fire.com/django-database-access-optimization.html 先做性能分析 - 两个工具 django.db.connection from django.db import connection context ......

首席安全砖家 ⋅ 2013/09/27 ⋅ 0

django model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct

1.多表连接查询:当我知道这点的时候顿时觉得django太NX了。 class A(models.Model): name = models.CharField(u'名称') class B(models.Model): aa = models.ForeignKey(A) B.objects.filte......

我的去哈哈 ⋅ 2014/03/19 ⋅ 0

MongoEngine 0.6 发布

MongoEngine 0.6 发布了,MongoEngine由Python语言写成,提供一个很类似Django ORM的API 用于访问 MongoDB 数据库。 详细的改进记录: Added FutureWarning to inherited classes not decla...

红薯 ⋅ 2012/03/05 ⋅ 0

django model filter 条件过滤,及多表连接查询、反向查询

1.多表连接查询:当我知道这点的时候顿时觉得django太NX了。 class A(models.Model): name = models.CharField(u'名称') class B(models.Model): aa = models.ForeignKey(A) B.objects.filte......

best_raven ⋅ 2015/08/24 ⋅ 0

Django 1.9.6 和 1.8.13 发布,Python Web 架构

Django 1.9.6 和 1.8.13 发布了。Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据...

oschina ⋅ 2016/05/03 ⋅ 1

django model filter 条件过滤

最近正在学习这块,从网络搜到这块,几下备查。 原文:http://www.douban.com/note/301166150/ 1.多表连接查询:当我知道这点的时候顿时觉得django太NX了。 class A(models.Model): name = ...

北方攻城师 ⋅ 2015/01/11 ⋅ 0

Django框架---model模型基础

ORM 映射关系: 表名 <-------> 类名 字段 <-------> 属性     表记录 <------->类实例对象 回到顶部 创建表(建立模型) 实例:我们来假定下面这些概念,字段和关系...

迟到的栋子 ⋅ 2017/11/17 ⋅ 0

django QuerySet里那些常用又不常见的技巧

最近的作业是django rest,业务有点复杂,因此model部分会有各种查询,有些确实之前很少用到的东西,向Q,F,这都是毛啊 QuerySet 像Entry.Objects.all(),这些操作返回的是一个QuerySet对象,...

duoduo3_69 ⋅ 2014/02/12 ⋅ 2

Django查询集 API

查询集API 参考 本文档描述查询集 API 的细节。它建立在模型和数据库查询指南的基础上,所以在阅读本文档之前,你也许需要首先阅读这两部分的文档。 本文档将通篇使用在数据库查询指南中用到...

楠木楠 ⋅ 2016/09/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue使用mockjs

在使用vue开发的时候,一直疑惑与mockjs怎么用,开了mockjs的开发文档,还是一脸蒙蔽,无从下手!mockjs在前后端分离开发上进行模拟数据,是不可避掉的一环。在网上看了一些博文还有查阅了其...

JamesView ⋅ 28分钟前 ⋅ 0

解决问题的思路

1.相对来说,程序逻辑解决问题的思路应该更加趋向于通过逻辑结构来解决问题,而不是通过更小的类级别和方法级别的改进 2.类级别和方法级别的改进需要的技术能力更高一点

th778899 ⋅ 35分钟前 ⋅ 0

HTTP请求状态及jQuery AJAX请求异常处理

上一周调优一个项目的Js部分,其中一个严重的问题就是在页面初始化数据时,没有对异常进行处理, 导致Loading一直在等待中,无提示无处理。在用户体验上很不好,即使网络条件无法保证,在出错...

临江仙卜算子 ⋅ 35分钟前 ⋅ 0

error code 1874. innodb is in read only mode--报错解决

参考网页 https://zhidao.baidu.com/question/746894876932022292.html https://blog.csdn.net/shushugood/article/details/80226767 问题背景 创建了一个数据库然后想删除,因为自己本机性能......

karma123 ⋅ 36分钟前 ⋅ 0

JVM系列:jinfo命令详解

jinfo全称Java Configuration Info,主要作用是实时查看和调整JVM配置参数。 一.查看JVM参数 用法:jinfo -flag <name> PID 示例: # jinfo -flag MaxMetaspaceSize 11180 # -XX:MaxMetaspac......

Jacktanger ⋅ 41分钟前 ⋅ 0

exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

1. exportfs命令 一般情况下重启服务器上nfs服务时,需把客户端上的挂载先卸载掉,以免进程后面杀不掉。当客户端服务器很多时,操作起来就比较麻烦。此时可以使用exportfs命令重新加载下。 ...

laoba ⋅ 50分钟前 ⋅ 0

基于Python的信用评分卡模型分析

信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“四张卡”来表示,分别是A卡、B卡、C卡和F卡;债项评级模型通常按照主...

火力全開 ⋅ 51分钟前 ⋅ 0

执行make命令时报错g++: Command not found

执行make命令时报错g++: Command not found 2016年10月24日 12:31:29 阅读数:4366 朋友安装node时遇到的问题 报错截图: 其实很简单只需要安装一下 yum -y install gcc automake autoconf l...

rootliu ⋅ 51分钟前 ⋅ 0

Loongnix(龙芯)系统,优盘安装指南

U盘安装分为两种方式:"usb disk" 及 "usb cd"。其中usb cd是将usb disk做为usb光驱使用。 usb disk安装步骤: 需要准备一个大小超过3.5G的U盘,格式化ext3格式 下载安装光盘镜像xxx.iso,将...

gugudu ⋅ 55分钟前 ⋅ 0

HTML5中meta属性的使用详解

meta属性在HTML中占据了很重要的位置。如:针对搜索引擎的SEO,文档的字符编码,设置刷新缓存等。虽然一些网页可能没有使用meta,但是作为正规军,我们还是有必要了解一些meta的属性,并且能...

guorongjin ⋅ 58分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部