在TextField中过滤JSON数据

时间:2017-07-04 12:17:56

标签: django

我使用的版本:

psycopg2==2.6.2
django=1.10.5
postgres=9.3

我想使用Django将JSON数据存储到数据库,但是我不能使用JSONField(),因为它只需要jsonb类型,只存在于PostgreSQL> = 9.4。

我的Django模型如下:

class Inspection(models.Model):
    data = models.TextField(null=False, blank=False)

data字段中,我想存储JSON数据。

数据如下:

记录1:

{
  "url": "some_url",
  "user": [
    {
      "id": "1",
      "email": "myemail@hotmail.com",
      "first_name": "My_First_Name",
      "last_name": "My_Last_Name"
    }
  ]
}

RECORD2

{
      "url": "some_url",
      "user": [
        {
          "id": "2",
          "email": "myemail_2@hotmail.com",
          "first_name": "My_First_Name_2",
          "last_name": "My_Last_Name_2"
        }
      ]
    }

我可以过滤user id吗?

2 个答案:

答案 0 :(得分:1)

id = 1
Inspection.objects.filter(data__icontains='"id": "{}"'.format(id))

尝试使用上面的结果并在冒号(:)符号后使用空格。

答案 1 :(得分:0)

您可以实现自己的过滤器。看一下this文章。您可以直接编写SQL查询,并将其放在自定义过滤器中。