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の衝突である可能性がありますか?