Django Model获取指定列的数据(values_list和value)
model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_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

浙公网安备 33010602011771号