python - Django:检查 values_list 中的值是否有和没有 prefetch_related/select_related

标签 python django list orm

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

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 1.5 吗?

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

这已在 Django 1.6 中修复。

关于python - Django:检查 values_list 中的值是否有和没有 prefetch_related/select_related,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987954/

相关文章:

html - 创建备用列表元素

python - 将坐标列表转换为元组列表

python - 使用 matplotlib.pyplot 时没有可见的 text()

Django CharField 转字符串

python - Django 帮助 : Resolving NOT NULL constraint failed error with CreateView

python - 使用 django.contrib.gis.measure.D 时出现 GeoDjango dwithin 错误

python - 如何将前导数字添加到空列表中并用输入填充它

python - 任何人都可以解释为什么我收到此错误 [ImportError : lxml not found, 请安装它]

python - 更改 pandas 数据框中预选元素的列

python - 如何在 Windows 8 中拥有合适的 tkinter 窗口?