【问题标题】:django JSONField regexdjango JSONField 正则表达式
【发布时间】:2019-02-27 20:39:54
【问题描述】:

我使用的是 Django 2.1,并且我有带有 JSONField(record) 的模型:

{
    'fields': [
        {'tag': 'x','value': '12345'},
        {'tag': 'y','value': '67890'}
    ]
}

要查询我使用的确切“值”:

Data.objects.filter(record__fields__contains=[{'tag':'x', 'value': '12345'}])

我的问题是,如何将正则表达式与“值”一起使用?例如

Data.objects.filter(record__fields__contains=[{'tag':'x', 'value': '/^123.*/'}])

【问题讨论】:

  • 不会总是有效,因为 JSON 键的顺序(从概念上讲)是免费的,因此 JSON 可能看起来像 {"value": '1234', "tag": 'x'}。据我所知,只有 PostgreSQL(和 MongoDb)有工具来查看查询中的键/值。
  • 我忘了提到我使用 PostgreSQL:from django.contrib.postgres.fields import JSONField 我知道在 Mongo 中可以使用原始查询:{ <field>: { $regex: 'pattern', $options: '<options>' } }

标签: django django-jsonfield


【解决方案1】:

你可以很简单:

Data.objects.filter(record__icontains='{"tag":"x", "value": "123')

answer

【讨论】:

  • 您能解释一下您的解决方案吗?它将对社区更有用。请参阅如何创建最小、完整和可验证的示例 --> stackoverflow.com/help/mcve
猜你喜欢
  • 1970-01-01
  • 2011-03-22
  • 2014-06-14
  • 2013-07-12
  • 2013-07-26
  • 2014-07-08
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多