gpt4 book ai didi

python - 我遇到了一个关于 django Queryset 的棘手问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:10 25 4
gpt4 key购买 nike

棘手的代码:

user = User.objects.filter(id=123)
user[0].last_name = 'foo'
user[0].save() # Cannot be saved.
id(user[0]) # 32131
id(user[0]) # 44232 ( different )

用户不能以这种方式保存。

普通代码:

user = User.objects.filter(id=123)
if user:
user[0].last_name = 'foo'
user[0].save() # Saved successfully.
id(user[0]) # 32131
id(user[0]) # 32131 ( same )

那么,问题是什么?

最佳答案

在第一个变体中,您的user 查询集尚未评估。所以每次你写 user[0] ORM 都会对 DB 进行独立查询。在第二个变体中,查询集被评估并像普通的 Python 列表一样工作。

顺便说一句,如果您只想要一行,请使用 get:

user = User.objects.get(id=123)

关于python - 我遇到了一个关于 django Queryset 的棘手问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324341/

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