Django 从 postgres JSON 字段获取值

Django getting values from postgres JSON field

我有一个简单的模型,例如:

class MyModel(models.Model):
    data = JSONField()

JSONField data 的结构如下:

{
  "name": "Brian",
  "skills": [
     {"id": 4, "name": "First aid"},
     {"id": 5, "name": "Second aid"}
  ]
}

我想创建一个查询,以获取由数据中 skillid 过滤的 MyModels 列表。

我在这里尝试了几种不同的途径,并且可以在 Python 中完成这项工作,但我很确定在 Django 中有一种方法可以做到这一点;我认为我的 SQL 还不够好,无法弄清楚。

提前干杯。

试试这个

>>> MyModel.objects.filter(data__skills__contains=[{'id':4}, {'id':5}])

有关 JSON 过滤器的更多信息 https://docs.djangoproject.com/en/3.1/topics/db/queries/#querying-jsonfield