我已经观察到这种行为,但我不太明白。假设我进行了查询:
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 。有人可以向我解释为什么有区别吗?