详解Django的 values() 函数:获取指定字段的值

  • Post category:Python

下面是关于Django中的values()函数的详细讲解:

1.作用

Django中的values()函数用于返回QuerySet对象的字典形式的结果集,其中Key为查询字段或者其它指定属性,Value为该字段或者属性的值。

2.使用方法

values()函数的使用方法为在QuerySet对象后调用values()函数,括号中可以传入指定的字段名或者属性名。代码如下:

queryset.values(*fields)

其中,*fields为可选参数,为要返回的字段或者属性。如果没有传入任何参数,则默认返回该Model中所有的字段组成的结果集。如果范围指定的属性没有在Model类中定义,将会抛出异常。

需要注意,使用values()函数后总是会返回一个字典形式的结果集,不管调用前的结果集中返回的是什么类型。

3.实例说明

假设有一个Student表,包含以下字段:

id, name, age, gender, score

例1.查询年龄大于18岁的学生名字和年龄,以字典形式返回

from app.models import Student

queryset = Student.objects.filter(age__gt=18)
result = queryset.values('name', 'age')
print(result)

输出结果:

<QuerySet [{'name': 'Tom', 'age': 20}, {'name': 'Lucy', 'age': 22}]>

例2.查询年龄大于18岁的学生,以字典形式返回学生姓名和总分数

from django.db.models import Sum
from app.models import Student

queryset = Student.objects.filter(age__gt=18)
result = queryset.annotate(score_sum=Sum('score')).values('name', 'score_sum')
print(result)

输出结果:

<QuerySet [{'name': 'Tom', 'score_sum': 150}, {'name': 'Lucy', 'score_sum': 200}]>

以上就是关于Django中values()函数的作用和使用方法的完整攻略。