ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
如果记录的字段很多,获取所有字段会占用大量内存,因此可以使用value,和value_list获取指定的字段。 ### get,all, filter会获取记录的所有字段 ~~~python v1 = models.Business.objects.all() 返回结果为QuerySet, 元素为对象 # [obj(id,caption,code),obj(id,caption,code),...] ~~~ ### value 获取指定的字段 value方法获取指定字段,相当于select 字段1,字段2 from table ~~~ v2 = models.Business.objects.all().values('id','caption') 返回结果为QuerySet,元素为字典 # [{'id':1,'caption': ''},{'id':1,'caption': ''},...] ~~~ ### value_list 获取指定的字段 同value,只是获取的元素为元组 ~~~ v3 = models.Business.objects.all().values_list('id','caption') 返回结果为QuerySet, 元素为元组 # [(1, ' '),(2, '')] ~~~ 如果只需要 1 个字段,可以指定 flat=True,直接显示元素,不再使用元组 ~~~ Author.objects.values_list('name', flat=True) <QuerySet [u'WeizhongTu', u'twz915', u'wangdachui', u'xiaoming']> ~~~ >[danger] lazy evaluation 惰性评估 value_list和value返回的并不是真正的 列表 或 字典,通俗地说,就是用的时候才真正的去数据库查 如果查询后没有使用,在数据库更新后再使用,得到的是新内容