通过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