首页 > 数据库 >Django 数据库--values_list 指定字段取值及 distinct 去重处理

Django 数据库--values_list 指定字段取值及 distinct 去重处理

时间:2023-10-09 17:33:44浏览次数:48  
标签:name -- list Django Project objects values dict

通过QuerySet 会返回model的所有字段,通过obj.field_name 即可获取对应字段的数据

values() :获取某一个或者某几个字段的数据

指定字段

  使用values() 指定参数可以仅仅返回相应字段的字典列表,如: name_dict_list = Project.objects.values('name')

  则 name_dict_list =  <QuerySet [ {'name': 'tets1'}, { 'name' : 'test2'} ]>

  可通过下标,访问单条数据,如: name_dict_list [ 0 ]的结果:{‘name’: 'test1'}

不指定字段

  使用values()不指定参数时,返回的则是该model 所有字段的字典列表,如:project_obj = Project.objects.filter(id=1).values()

  则 project_obj = < QuerySet [ { 'id': 1 }, {'name': 'tets1'}, {'tag': 'aaaa'} ] >

  还可以对 values 指定的字段值进行处理后返回,比如全部小写:

  from django.db.models.functions import Lower

  Project.objects.values(Lower_name=Lower('name'))

  获取外键字段

  在指定外键加上双下划线和字段名即可:Project.objects.values('interface__name')

 

valuse_list()

  values() 函数返回的结果是字典列表,列表里的元素是一个个的字典

  values_list() 函数返回的结果是元组列表,列表里的元素是一个个的元组,如:

  name_dict_list = Project.objects.values_list('name', 'tester') ==> name_dict_list =  <QuerySet [ ('name1', 'tetser1'), ('name2',  'tester2') ]>

  若需要获取的仅有一个字段,返回的也是一个元组列表,但为了方便查看,可使用flat=True 即可获取 name 的值列表,如:

  name_dict_list = Project.objects.values_list('name') ==> name_dict_list =  <QuerySet  [ 'name1',  'name2'  ] >

  

distinct()

  相当于 mysql 的 DISTINCT 的用法,这个用法需要用到 values() 方法,如:

  Project.objects.values('name').distinct()

  

 

  

 

 

 

 

 

 

  

标签:name,--,list,Django,Project,objects,values,dict
From: https://www.cnblogs.com/lili37/p/17752277.html

相关文章

  • 00webpack之前期准备
    1环境准备1.1安装git(可选)Git官网下载地址Git安装步骤1.2安装nodeNode官网下载地址安装完成后,查看node版本node-vnpm是随同node一起安装的包管理工具,安装完node以后,就可以直接使用了安装淘宝镜像:使用cnpm命令(可选)npminstall-gcnpm--registry=https://......
  • 01webpack基础知识
    1概述1.1什么是webpack1、webpack是一种前端资源构建工具,一个静态模块打包器(modulebundler)。在webpack看来,前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)2、webpack是一个前......
  • Clickhouse时间日期函数一文详解+代码展示
    转:https://blog.csdn.net/master_hunter/article/details/125762575一、时间函数和MySQL时间函数有些不同,但是时间函数的功能是一样的,这里把常用的时间函数给出,效果以实际代码运行结果为准: 1.取当前时间SELECT now()AStimeSELECT today()AStime获取当前时间戳SELECT ......
  • pyyaml 中文亂碼
    https://www.cnblogs.com/BlueSkyyj/p/12781752.html解决办法加入参数allow_unicode=Truefw=open(yamlFile,'a',encoding='utf-8')w=ryaml.dump(w,fw,allow_unicode=True)fw.close()......
  • GBU610-ASEMI新能源专用整流桥GBU610
    编辑:llGBU610-ASEMI新能源专用整流桥GBU610型号:GBU610品牌:ASEMI封装:GBU-4恢复时间:>50ns正向电流:6A反向耐压:1000V芯片个数:4引脚数量:4类型:整流桥、功率整流器件特性:功率整流器件、高耐压整流桥浪涌电流:200A正向压降:1.10V封装尺寸:如图工作温度:-55°C~150°CGBU610特性......
  • RuntimeError: dictionary changed size during iteration
    RuntimeError:dictionarychangedsizeduringiteration解决办法-CSDN博客字典遍历时,不允许修改修改前forkeyinsys.modules.keys():ifkey.startswith('selenium'):delsys.modules[key]改成listforkeyinlist(sys.modules.keys())......
  • Install docker on CentOS _base China
    yumremovedocker//卸载dockeryuminstall-yyum-utils//扩展和增强yum包管理器#配置docker安装源yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo#installdocker(latestversion)yuminstall-ydocker-cedocker-ce-c......
  • 造轮子之自定义授权策略
    前面我们已经弄好了用户角色这块内容,接下来就是我们的授权策略。在asp.netcore中提供了自定义的授权策略方案,我们可以按照需求自定义我们的权限过滤。这里我的想法是,不需要在每个Controller或者Action打上AuthorizeAttribute,自动根据ControllerName和ActionName匹配授权。只需要......
  • vue3+ts中使用echarts
    1. 下载npminstall-Secharts2.使用方法一(推荐使用)<divclass="echart_box"ref="echartDom"></div><scriptsetuplang="ts">import*asechartsfrom"echarts";constechartDom=ref()//使用ref创建虚拟DOM引......
  • HarmonyOS网络管理开发—Socket连接
     简介Socket连接主要是通过Socket进行数据传输,支持TCP/UDP/TLS协议。基本概念● Socket:套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。● TCP:传输控制协议(Transmission Control Protocol)。是一种面向连接的、可靠的、基于字节流的传输层通......