values(*fields)
返回一個(gè)ValuesQuerySet查詢集,是QuerySet的一個(gè)子類,類似pymysql的字典游標(biāo),返回的結(jié)果是一個(gè)列表,列表里面是一個(gè)個(gè)字典,字典里面就是每個(gè)對(duì)象的values指定的字段.如果不指定字段,返回全部字段
示例:
# This list contains a Blog object.
>>> Blog.objects.filter(name__startswith='Beatles')
[<Blog: Beatles Blog>]
# This list contains a dictionary.
>>> Blog.objects.filter(name__startswith='Beatles').values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]
>>> Blog.objects.values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]
>>> Blog.objects.values('id', 'name')
[{'id': 1, 'name': 'Beatles Blog'}]
如果你指定的字段是一個(gè)外鍵字段,那么會(huì)返回關(guān)聯(lián)模型對(duì)象的主鍵
>>> Entry.objects.values()
[{'blog_id': 1, 'headline': 'First Entry'},{'blog_id': 2, 'headline': 'second Entry'},{'blog_id': 1, 'headline': 'three Entry'}, ...]
>>> Entry.objects.values('blog')
[{'blog': 1}, {'blog': 2},{'blog': 1}, ...]
>>> Entry.objects.filter(headline__startswith="First").values('blog')
[{'blog': 1}]
>>> Entry.objects.values('blog_id')
[{'blog_id': 1}, {'blog_id': 2},{'blog_id': 1}, ...]
values_list(*fields,flat=False)
與values是作用是一樣的,只是返回?cái)?shù)據(jù)的格式不同,values返回的是字典列表,values_list返回元祖列表.元祖是由指定的字段查詢到的值組成的,具體請看示例:
>>> Entry.objects.values_list('id')
[(1, ),(2,) ...]
>>> Entry.objects.values_list('id', 'headline')
[(1, 'First entry'), (2,"second entry"),...]
>>> Entry.objects.values_list('id', flat=True).order_by('id')
[1, 2, 3, ...]
警告
上面的flat=True,是以值的數(shù)據(jù)結(jié)構(gòu)返回,所有注定了flat=True的時(shí)候只能指定返回單個(gè)字段,如果傳遞多個(gè)字段會(huì)出錯(cuò)