我的模型当前如下所示:
class Review(models.Model):
source = models.CharField(max_length=80, blank=True, null=True)
metadata = JSONField(default=dict)
entity_type = models.CharField(max_length=255, blank=True, null=True)
类Review的示例查询集:
[{
"id": 123,
"source": "amazon",
"entity_type": "media",
"metadata": [
{
"product": 123456
},
{
"product": 012345
}
]
},
{
"id": 1234,
"source": "amazon",
"entity_type": "media",
"metadata": [
{
"product": 123456
},
{
"product": 12345
}
]
}]
我想基于“源”,“实体类型”,“元数据产品”注释计数
我说的是类似Django的查询:
Review.objects.filter().values(
"source","entity_type","metadata__product"
).annotate(count=Count('id'))
这显然不起作用。
我想获取类似于以下内容的输出查询集:
[{"source": "amazon", "entity_type": "media", "metadata_product":
123456, "count": 2},
{"source": "amazon", "entity_type": "media","metadata_product":
012345, "count": 1},
{"source": "amazon", "entity_type": "media","metadata_product":
12345, "count": 1}]
我想使用Django ORM来实现这一目标,而不是求助于python,因为该表包含的数据接近10或2000万。 如果无法做到这一点,那么如果有人可以建议将原始SQL查询放入Django ORM原始SQL方法中,那将是非常好的。