7

我已经观察到这种行为,但我不太明白。假设我进行了查询:

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 。有人可以向我解释为什么有区别吗?

4

1 回答 1

7

您使用的是 Django 1.5 吗?

使用时存在导致in查找失败的错误prefetch_related错误 20242

这已在 Django 1.6 中修复。

于 2013-11-14T22:01:59.983 回答