【问题标题】:Django: use JSONField properties in filter and searchDjango:在过滤器和搜索中使用 JSONField 属性
【发布时间】:2013-07-06 03:48:14
【问题描述】:

我正在尝试在 Django 列表视图中创建自定义 filtersearch,它们将使用存储在 JSONField 中的值,就像它们被定义为常规模型字段。

我想我需要定义一个带有自定义 get_queryset() 函数的模型管理器,但我不确定如何将 json 数据“脱水”并将其作为查询集的一部分返回。

到目前为止,其他一些方法都失败了:我可以将值插入到自定义 ListView 中的上下文字典中,但无法查询该上下文。还尝试在 admin.py 中定义属性并将一些 @property 定义包装在 models.py 中;在这里遇到同样的问题,因为无法查询属性。

有什么建议吗?

【问题讨论】:

标签: django django-queryset django-managers


【解决方案1】:

您不能这样做(无论如何,在普通的 RDBMS 中)。

过滤器由数据库评估,它对 JSON 中的字段一无所知:它只是一个不透明的 blob。如果您需要搜索这些字段,则需要将它们存储为适当的数据库可访问数据。

【讨论】:

    【解决方案2】:

    如果(且仅当)您使用的是 PostgreSQL,您可以这样做

    看看如何在 Django 文档中query JSONField in PostgreSQL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-23
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2020-03-22
      相关资源
      最近更新 更多