次のモデルがあります。
from django_hstore import hstore
from django.db import models
class Item(VoteModel):
data = hstore.DictionaryField(db_index=True)
objects = hstore.HStoreManager()
何かのようなもの:
Item.objects.extra(select={"key": "content_item.data -> 'key'"}).aggregate(Count('key'))
動作しません。Django クエリで .extra(select={...}) を使用して導入された値に .aggregate() を使用しますか? およびhttps://code.djangoproject.com/ticket/11671。
動作する生の SQL は次のとおりです。
SELECT content_item.data -> 'key' AS key, count(*) FROM content_item GROUP BY key;
key | count
-----------+-------
value1 | 223
value2 | 28
value3 | 31
(3 rows)
Django の ORM で同じ結果を得るにはどうすればよいですか?
ご参考までに:
Item.objects.extra(select={"key": "content_item.data -> 'key'"})
に変換:
SELECT (content_item.data -> 'key') AS "key", "content_item"."id", "content_item"."data" FROM "content_item"