如何使用 Postgres 在 Django 中的 JSONField 中搜索带空格的键?
How to search in a JSONField for a key with spaces in Django with Postgres?
假设我在 Django 中的一个 models.py 中定义了一个 JSONField,即 "data"。该字段的内容与以下内容有些类似-
{
"name": "John",
"email": "johndoe@foo.bar",
"last name": "Doe"
}
我需要编写如下形式的查询 -
self.objects.filter(data__name="John")
如何为键 "last name" 编写类似的查询。我无法继续,因为该密钥具有 space。正在考虑使用 python 获取数据并对其进行过滤,但我认为会有更有效的方法来完成它。
我无法真正控制 JSONField 中的数据。所以,我真的不能更改密钥的名称。
我们可以通过以下方式实现-
lookup = "data__last name"
self.objects.filter(**{lookup: "Doe"})
对于 JSON 字段,您可以使用包含:
self.objects.filter(data__contains={"last name": "Doe"})
假设我在 Django 中的一个 models.py 中定义了一个 JSONField,即 "data"。该字段的内容与以下内容有些类似-
{
"name": "John",
"email": "johndoe@foo.bar",
"last name": "Doe"
}
我需要编写如下形式的查询 -
self.objects.filter(data__name="John")
如何为键 "last name" 编写类似的查询。我无法继续,因为该密钥具有 space。正在考虑使用 python 获取数据并对其进行过滤,但我认为会有更有效的方法来完成它。
我无法真正控制 JSONField 中的数据。所以,我真的不能更改密钥的名称。
我们可以通过以下方式实现-
lookup = "data__last name"
self.objects.filter(**{lookup: "Doe"})
对于 JSON 字段,您可以使用包含:
self.objects.filter(data__contains={"last name": "Doe"})