Django Model获取指定列的数据(values_list和value)

model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到valuesvalues_list

利用values查询

from attendence.models import Employee
from attendence.models import EmployeeIP

#获取一个字段
ipList = EmployeeIP.objects.values("IP").first()
print(type(ipList))
# <class 'dict'>
print(ipList)
# {'IP': '192.168.1.41'}

#获取多个字段
empList = Employee.objects.values("first_name", "last_name", "email")[0:2]
print(type(empList))
# <class 'django.db.models.query.QuerySet'>
print(empList)
# [
#   {'last_name': 'Wei', 'first_name': 'Vena', 'email': 'Vena@test.com'},
#   {'last_name': 'Wan', 'first_name': 'Mark', 'email': 'mwan@test.com'}
# ]

利用values_list查询

ipList = EmployeeIP.objects.values_list("IP").first()
print(type(ipList))
# <class 'tuple'>
print(ipList)
# ('192.168.1.111',)

ipList = EmployeeIP.objects.values_list("IP")[0:2]
print(type(ipList))
# <class 'django.db.models.query.QuerySet'>
print(ipList)
# [('192.168.1.41',), ('192.168.1.44',)]
print(type(ipList[0]))
# <class 'tuple' >
print(ipList[0])
# 192.168.1.111

values和values_list的差别

从上面的代码中我们可以看到返回结果类型上细微的差别

  • vlaues -
    • 单条记录 - <class 'dict'>
    • 多条记录 - <class 'django.db.models.query.QuerySet'>
  • vlaues_list -
    • 单条记录 - <class 'tuple'>
    • 多条记录 - <class 'django.db.models.query.QuerySet'>

 

values_list与filter组合查询

加上flag=True后,输出结果符合我的需求,就这样当作列表用了

black_list = Blacklist.objects.filter(black_status=True).values_list("black_pb", flat=True)
    print(type(black_list))
  #<class 'django.db.models.query.QuerySet'>
print(black_list)
  #<QuerySet ['SRVOP_PRVLG_MAN_GET_REQ', 'SRVOP_RST_GET_PERSONS_REQ', '111']>
if 'SRVOP_RST_GET_PERSONS_REQ' in black_list: print('okokokokokokokok')
  #okokokokokokokok

 

 

 

原文链接 :https://blog.csdn.net/weixin_33893473/article/details/86278284

posted @ 2022-11-14 15:11  sugoi  阅读(1351)  评论(0)    收藏  举报