我觀察過這種行爲,我不太明白。讓說我做一個查詢: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版本? –