下面是关于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()函数的作用和使用方法的完整攻略。