gpt4 book ai didi

python - Django F 表达式加入字段

转载 作者:IT老高 更新时间:2023-10-28 20:55:20 25 4
gpt4 key购买 nike

所以我试图通过运行以下命令来更新我的模型:

FooBar.objects.filter(something=True).update(foobar=F('foo__bar'))

但我收到以下错误:

FieldError: Joined field references are not permitted in this query

如果 F 表达式不允许这样做...我该如何实现此更新?

门票

鉴于 this ticket 中的信息,我现在明白这是不可能的,并且永远不会在 django 中实现,但是有没有办法实现这个更新?也许有一些解决方法?我不想使用循环,因为有超过 1000 万个 FooBar 对象,所以 SQL 比 python 快得多。

最佳答案

Django 1.11 增加了对子查询的支持。你应该能够做到:

from django.db.models import Subquery, OuterRef

FooBar.objects.filter(something=True).update(
foobar=Subquery(FooBar.objects.filter(pk=OuterRef('pk')).values('foo__bar')[:1])
)

关于python - Django F 表达式加入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439031/

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