我有模特
class Product(Model):
properties = JSONField()
查询时
Product.objects.values('properties__color')
我得到正确的结果
选择product.properties->颜色为产品
但是,当我做我认为等同的事情
Product.objects.values(color=F('properties__color'))
执行的查询完全不同
选择product.properties作为产品的颜色
这是Django JSONField的错误,还是我误解了F()
表达式?
答案 0 :(得分:0)
您可以使用普通的values('fieldname__lookup')
,因为values()
从v2.1开始支持查找:
Product.objects.values('properties__color')
F
表达式不支持查找。实际上,正如您的示例所证明的那样,它们默默地丢弃了它们。
使用JSONField
转换时,当要查找的字段嵌套的深度超过一层时,请注意bug。在链接的问题中,如果普通的values()
还不够,您还将找到一种使用命名注释的解决方案。