如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?
Posted
技术标签:
【中文标题】如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?【英文标题】:How to search in a JSONField for a key with spaces in Django with Postgres? 【发布时间】:2020-09-21 19:05:13 【问题描述】:假设我在 Django 中的一个 models.py 中定义了一个 JSONField,即“数据”。该字段的内容与以下内容有些相似 -
"name": "John",
"email": "johndoe@foo.bar",
"last name": "Doe"
我需要编写如下形式的查询 -
self.objects.filter(data__name="John")
如何为键“姓氏”编写类似的查询。我无法继续,因为该键有空格。正在考虑使用 python 获取数据并对其进行过滤,但我认为会有更有效的方法来完成它。
我无法真正控制 JSONField 中的数据。所以,我真的不能更改密钥的名称。
【问题讨论】:
这可能会有所帮助:***.com/questions/1227091/… 【参考方案1】:我们可以通过以下方式实现-
lookup = "data__last name"
self.objects.filter(**lookup: "Doe")
【讨论】:
【参考方案2】:对于 JSON 字段,您可以使用 contains:
self.objects.filter(data__contains="last name": "Doe")
【讨论】:
以上是关于如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?的主要内容,如果未能解决你的问题,请参考以下文章
如何在具有 Jsonfield 的模型中发布 django rest 中的数据
Django:在过滤器和搜索中使用 JSONField 属性
如何在 django 中从 JSONField 追加/删除数据
如何在 Django JSONField 数据上聚合(最小/最大等)?
我应该如何从 bradjasper 的 django-jsonfield 升级到 Django 的内置 jsonfield?