Django JSONField 字符串包含

Posted

技术标签:

【中文标题】Django JSONField 字符串包含【英文标题】:Django JSONField string containment 【发布时间】:2017-03-05 03:19:50 【问题描述】:

使用 Django 1.10 的 JSONField,我想通过 json 字段过滤查询集,该字段在包含子字符串(类似 sql)的特定键处具有值。 例如有一个 json 字段link,带有url 键。我想要它的 url 包含的对象 .jpg

【问题讨论】:

没有 django 支持 afaik,你需要的原始查询 ***.com/questions/28718958/… 【参考方案1】:

如果可以,我将为视图/模型创建一个“get_queryset”函数:

    def get_queryset(self):
        queryset = Entry.objects.all()
        json = params.get('json', None)
        if json is not None:
            """ DO STUFF HERE TO STRIP THE JSON TO THE WANTED LINK """
            q = queryset.filter(json__icontaints=".jpg")
        return q

在此处阅读有关此主题的更多信息:https://docs.djangoproject.com/en/1.10/topics/db/queries/

【讨论】:

官方文档中指定,contains在过滤json字段时有特殊含义,你使用icontains作为普通字段 这(json__containsjson__icontains)不适用于 JSON 字段。 code.djangoproject.com/ticket/26511

以上是关于Django JSONField 字符串包含的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Django 将 postgres JSONField 值作为字符串返回?

如何在 DJANGO 中查询包含值列表的 JSONField

django 无法访问模板中的 jsonfield 数据

Django 1.9 JSONField order_by

如何在具有 Jsonfield 的模型中发布 django rest 中的数据

我应该如何从 bradjasper 的 django-jsonfield 升级到 Django 的内置 jsonfield?