Django 1.9 と Postgres 9.4 を使用。
と呼ばれるjsonbフィールドがありjson_fieldます。json_fieldのようなキーtitleを含めることができます'the cow jumped over the moon'。
titleだから私は含む行を検索したいmoon。
次の生の SQL を使用して適切に動作します
SELECT * FROM web_file where (json_field ->> 'title')::text LIKE '%moon%';
しかし、私はむしろ Django ORM を使用してそれを行いたいと思います。
編集:
私は試してみようと思いました(そして@kloddantが指摘したように)
title = WebFile.objects.filter(json_field__title__contains='moon')
しかし、次のエラーが発生します
DataError: invalid input syntax for type json
LINE 1: ...le" WHERE "web_file"."json_field" -> 'title' @> 'moon' ORD...
^
DETAIL: Token "moon" is invalid.
CONTEXT: JSON data, line 1: moon
関連はこちらmodels.py
from django.contrib.postgres.fields import JSONField
class WebFile(MPTTModel):
json_field = JSONField(null=True, blank=True, default=dict())
疑わしいですが、djangoモデルとMPTTModelの衝突である可能性がありますか?