1

我正在尝试创建一个自定义过滤器并在 Django 列表视图中搜索,该列表视图将使用存储在 JSONField 中的值,就像它们被定义为常规模型字段一样。

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

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

有什么建议么?

4

2 回答 2

1

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

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

于 2013-07-08T20:16:22.273 回答
1

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

看看如何在 Django 文档中查询 PostgreSQL 中的 JSONField 。

于 2018-11-15T17:08:23.550 回答