【问题标题】:How to search in a JSONField for a key with spaces in Django with Postgres?如何在 JSONField 中使用 Postgres 在 Django 中搜索带有空格的键?
【发布时间】: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 中的数据。所以,我真的不能更改密钥的名称。

【问题讨论】:

标签: python django django-models django-postgresql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-30
      • 2022-08-11
      • 1970-01-01
      • 2013-07-06
      • 2021-03-25
      • 2020-12-12
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多