django - Django JsonField 数组数据查询
问题描述
我在 Postgres db 中有一个 jsonfield,数据如下:
income_info = [
{
"id": "1",
"name": "A",
"min_income": 22000
},
{
"id": "2",
"name": "B",
"min_income": 40000
},
{
"id": "3",
"name": "C",
"min_income": 22000
}
]
现在想在 django orm 查询集上使用 gte 和 lte。已经试过了
Employee.objects.filter(income_info__min_income__lte = 4000000)
但根本没有工作。
模型.py:
class Employee(models.Model):
institute = models.ForeignKey(Institute, on_delete=models.DO_NOTHING)
income_info = JSONField(default=list)
others = models.TextField(null=True)
解决方案
在 django 的查询 JsonFields的文档中:
如果键是整数,它将被解释为数组中的索引查找
由于您的 json 数据是 json 数据列表,因此您需要这样的查询:
Employee.objects.filter(income_info__0__min_income__lte=4000000)
推荐阅读
- angular - x 秒后显示 Angular Material 对话框
- c# - aspnet-codegeneration 分段错误
- python - 使用 PyInstaller 减小 Python 应用程序的大小
- c# - 表未在 C# 上更新
- c++ - Qt (C++) 设置 QWidgetTab 中各个选项卡的颜色
- reactjs - Formik + React-semantic-ui
- javascript - 我想在 Datatables 中使用 Div 结构而不是 Table。是否可以?
- python - Chrome 在一段时间后关闭并产生错误 selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service in python
- reactjs - Options React Select 中的可选字段
- python - 用于查找 SQL 语句并将其转换为 Redshift 表达式的 Python 正则表达式