我观察过这种行为,我不太明白。让说我做一个查询:Django:检查values_list中的值是否与prefetch_related/select_related相关
result = model.objects.all()
result_pks = result.values_list("id",flat=True)
print result_pks
我也得到:
[1,2,3,4]
然后,我要检查,如果某个值是PKS列表中返回:
val = 2
print val in result_pks
这将返回True,但是如果改为将结果更改为:
result = model.objects.prefetch_related("related_field").all()
result_pks = result.values_list("id",flat=True)
print result_pks
我仍然得到:
[1,2,3,4]
但是当我做:
val=2
print val in result_pks
我得到错误的。我尝试使用select_related代替,并且返回True,如我所料。有人可以向我解释为什么差异?
你使用的是什么Django版本? –