gpt4 book ai didi

python - Django 查询集 'in' 运算符在第一次调用时失败

转载 作者:行者123 更新时间:2023-11-28 19:24:48 25 4
gpt4 key购买 nike

在查询集上使用“in”运算符时,第一次调用失败。

编辑 4:

我已将我的问题简化为以下代码段,任何人都可以轻松测试。

from django.db import models


class Category(models.Model):
name = models.CharField(max_length=100)


class Project(models.Model):
categories = models.ManyToManyField(Category, related_name='projects')


category_list = Category.objects.prefetch_related('projects')


print category_list # [<Category: Category object>, <Category: Category object>]
print category_list[0] in category_list # False
print category_list[0] in category_list # True

如果我删除“prefetch_related”并改用“all”,那么问题就消失了,但是这会使用更多的数据库调用。

如何使用 prefetch_related 第一次获得正确的结果?

最佳答案

在 Django 文档中 here它显示与您相同的代码,但在 prefetch_related 前面有一个 .all()

也许在没有那个 Django 的情况下,查询可能太懒了?我认为它可能会等到第一个切片 [0] 并将其解释为查询 (LIMIT 0) 但这并不能解释显示那里所有内容的打印语句。无论哪种方式,它看起来都像是一个错误 - 无法想象这是“预期的行为”。

你能用 .all() 尝试一下并报告输出吗?

关于python - Django 查询集 'in' 运算符在第一次调用时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15923809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com