Django values()和value_list()的使用

yizhihongxing

对于Django中的查询是非常重要的一个部分,我们来详细讲解一下Django的values()和values_list()方法的使用。

Django values()方法

values()方法是在Django ORM框架中使用的一个方法,它可以用于从数据库中返回指定字段的值。可以理解为用于指定查询操作的选择器。values()方法返回的结果是一个QuerySet对象,你可以在这个对象上使用Django的ORM方法和属性做进一步的操作。

函数签名

values()方法的函数签名如下所示:

values(*fields, **expressions)

参数说明

  • fields: 字段名称列表。该列表指定您要从数据库中获取哪些字段的值。
  • expressions: 关键字参数。用于传递各种表达式,包括数据库操作和您自己定义的函数。

用法示例

以models.py文件中的User模型为例,以下是values()方法的几个示例:

# 获取所有用户id和name字段的值
User.objects.all().values('id', 'name')

# 获取name字段以及计算出用户的年龄
from django.db.models.functions import Now
from django.db.models import F, ExpressionWrapper, IntegerField
User.objects.annotate(
    age=ExpressionWrapper(now()-F('birthday'), 
    output_field=IntegerField())
).values('name', 'age')

以上两个示例分别用于返回User模型中所有用户的ID和姓名,另一种是返回用户姓名和计算的年龄。其中计算年龄需要使用Django的函数Now()和表达式F(),用于表示用户的生日字段和现在的日期计算出年龄。

Django value_list()方法

values_list()是Django ORM框架中一个用于返回查询结果中特定字段的值的方法。与values()相比,values_list()返回的结果是一个元组列表,而不是字典。

函数签名

下面是values_list()方法的函数签名:

value_list(*fields, flat=False, named=False)

参数说明

  • fields: 用于选择要返回的字段的名称列表
  • flat: 如果将其设置为True,则只返回单个变量(即返回值为一维的列表)
  • named: 如果将其设置为True,则将返回值转换为以字段名称作为键的字典

用法示例

以上面的User模型为例,以下是values_list()方法的几个示例:

# 获取所有用户的id和name字段值
User.objects.all().values_list('id', 'name')

# 获取所有用户id的值(single values list)
User.objects.all().values_list('id', flat=True)

# 获取所有用户id和name字段值作为字典返回
User.objects.all().values_list('id', 'name', named=True)

以上三个示例分别用于返回User模型中所有用户的ID和姓名,只获取所有用户ID的值,以及获取所有用户ID和姓名字段值作为字典返回。

在使用values()和values_list()方法时,需要注意的是查询结果是一个惰性的QuerySet对象。当你在迭代时或者转换为列表时才会执行查询操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django values()和value_list()的使用 - Python技术站

(1)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • python django 基本测试 及调试

    #########20181110from django.db import modelsfrom blog.models import Article, Author, TagAuthor.objects.using(‘db1’).all()     setting.py TEMPLATE_DIRS = ( os.path.join(BASE_DIR, ‘…

    Django 2023年4月13日
    00
  • python框架django基础指南

    下面将详细讲解关于“Python框架Django基础指南”的完整攻略及示例说明。 Python框架Django基础指南 简介 Django是一款使用Python编写的高级Web框架,采用了MVC模式(即Model-View-Controller模式),旨在帮助开发方便快捷地创建复杂、动态的Web应用程序。Django也是非常适合使用REST API构建的。 …

    Django 2023年5月16日
    00
  • ModuleNotFoundError: No module named ‘django’

    1 、就在前天 我还能用python3 manage.py runserver 0.0.0.0:8000 启动Django  今天就突然报错了(心情极为复杂,你这也能信?)   2、打印python找包的路径和环境变量 print(sys.path)       3、执行pip3 install django  查看pip安装完包的路径 ,对比这张 图和上一…

    2023年4月10日
    00
  • SmartChart配合Django的安装与使用

    SmartChart的Git地址:https://gitee.com/smartchart/smartchart 在这里我只能说一句话 SmartChart开发团队真厉害 配合Django来使用SmartChart 安装smartchart,Python版本>=3.6,Django>=2.0SmartChart和我们的admin是有关联的,我们可…

    Django 2023年4月12日
    00
  • django-admin 修改admin自带模版

    还不知道怎么指定修改每个页面,我就把把所有修改写在一个页面,通过url进行判断是否是是否显示修改内容,修改的是change_form.html,在admin里面可以找到 {% block object-tools %} {% if change %}{% if not is_popup %} <ul class=”object-tools”> {…

    Django 2023年4月12日
    00
  • Django之单表查询,多表查询(正向、反向查询),聚合查询

    常用字段 AutoField int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 IntegerField 一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_…

    Django 2023年4月12日
    00
  • python之django路由和视图案例教程

    下面是详细的“Python之Django路由和视图案例教程”的完整攻略及两条示例说明。 1. Django路由 Django路由定义了请求URL与视图函数之间的映射关系,是实现RESTful架构的重要组成部分。 1.1 url()函数 url()函数是Django用来声明URL映射关系的函数。它的原型是: url(regex, view, kwargs=No…

    Django 2023年5月16日
    00
  • [django]django 在apache2上部署静态文件如何加载

      首先找到apache2的conf文件下的httpd.conf,添加如下信息: Alias /static/ E:/wamp/Apache24/www/static/ <Directory E:/wamp/Apache24/www/static> Options FollowSymlinks AllowOverride none Require…

    Django 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部