gpt4 book ai didi

python - Django:在 JSONField 上使用 F() 表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:49 27 4
gpt4 key购买 nike

我有模型

class Product(Model):
properties = JSONField()

查询时

Product.objects.values('properties__color')

我得到了正确的结果

SELECT product.properties->color FROM product

然而,当我在做我认为是等价的事情时

Product.objects.values(color=F('properties__color'))

执行的查询完全不同

SELECT product.properties AS color FROM product

这是 django 的 JSONField 的错误,还是我误解了 F() 表达式?

最佳答案

您可以使用普通的 values('fieldname__lookup') 因为 values() 从 v2.1 开始支持查找:

Product.objects.values('properties__color')

F 表达式不支持查找;事实上,他们默默地丢弃了它们,正如您的例子所证明的那样。

使用 JSONField 转换时,注意 bug当您要查找的字段嵌套深度超过一层时。在链接的问题中,如果普通的 values() 不够用,您还将找到使用命名注释的解决方案。

关于python - Django:在 JSONField 上使用 F() 表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55550653/

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