如何使用Postgres在JSONField中搜索Django中带有空格的键?



>假设我有一个JSONField,即在Django的一个 models.py 中定义的"data"。该字段的内容有点类似于以下内容 -

{
"name": "John",
"email": "johndoe@foo.bar",
"last name": "Doe"
}

我需要编写以下形式的查询 -

self.objects.filter(data__name="John")

如何为键"姓氏"编写类似的查询。我无法继续,因为该键有一个空格。正在考虑获取数据并使用python过滤它,但我认为会有更有效的方法来完成它。

我没有真正控制 JSONField 中的数据。所以,我真的无法更改密钥的名称。

我们可以通过以下方式实现它 -

lookup = "data__last name"
self.objects.filter(**{lookup: "Doe"})

对于 JSON 字段,您可以使用包含:

self.objects.filter(data__contains={"last name": "Doe"})

最新更新