簡體   English   中英

Django:在JSONField上使用F()表達式?

[英]Django: using F() expressions on JSONField?

我有模特

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顏色FROM產品

這是django的JSONField的錯誤,還是我誤解了F()表達式?

您可以使用普通values('fieldname__lookup')因為自從v2.1起, values()支持查找:

Product.objects.values('properties__color')

但是F表達式不支持查找; 事實上,他們默默地丟棄它們,正如你的榜樣所證明的那樣。

當使用JSONField轉換,注意一個錯誤 ,當你正在尋找的字段被深套以上的水平。 在鏈接的問題中,如果普通values()不夠,您還可以找到使用命名注釋的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM