我的 JSONField 包含这样的数据:
class Car(models.Model):
data = JSONField()
Car.objects.first().data
{
u'colors': [
{u'color_id': u'1', u'source': u'Manufacturer 3'},
{u'color_id': u'2', u'source': u'Manufacturer 2'},
{u'color_id': u'3', u'source': u'Manufacturer 1'},
]
}
我知道我可以过滤结果:
Car.objects.filter(data__colors__contains=[{'color_id':'3'}])
有什么方法可以注释查询集,以便“color_id”包含在列表中?就像是:
Car.objects.all().annotate(color_ids=...)
这将使我能够做到:
Car.objects.first().color_ids
['3', '2', '1']
或者类似的东西,只是用 color_id 值过滤。使用 Django 1.11 和 Postgres 13。