【发布时间】:2018-07-13 14:41:35
【问题描述】:
大家好,我在 django postgres json 搜索中看到了我不理解的行为。 我正在使用 django 1.11 和 django orm 和 psycopg2 驱动程序。
如下:
model字段中的json长这样。
{"2018": [1, 2, 3]}
如果我使用这个查询:
models.mymodel.objects.filter(jsonfield__2018__contains=1)
Out[97]: <QuerySet []>
所以你可以看到我得到一个空查询。
然后我尝试这样做只是为了测试目的。 新 Json:
[ {"2018": [1, 2, 3]}]
新查询:
models.mymodel.objects.filter(jsonfield__0__2018__contains=1)
Out[98]: <QuerySet []>
它仍然没有给我任何回应。
然后我终于尝试了这个。 新 Json:
[ {"2018_1": [1, 2, 3]}]
新查询:
models.mymodel.objects.filter(jsonfield__0__2018_1__contains=1)
Out[100]: <QuerySet [<MyModel: MyModel object>]>
这个回复了,我无法理解它。有谁知道这是为什么?
【问题讨论】:
-
你能试试这个吗.. {"abc": [1, 2, 3]} .. models.mymodel.objects.filter(jsonfield__abc__contains=1) .. 如果可行,那么我们知道问题。 Django 不允许数字作为模型字段名称。
-
老兄,谢谢你,很好地抓住了它
标签: python sql django postgresql orm