4

我有句子模型,其中元数据作为JSONField
一个示例行是

Sentence.objects.filter(id=6753315).values('id', 'metadata')[0]

{'id': 6753315,
 'metadata': [{'filters': [{'id': None, 'level_name': 'Brand Hierarchy'},
                           {'id': None, 'level_name': 'Category Hierarchy'}],
               'product': None,
               'themes': [{'id': 35299, 'sentiment': 'Positive'},
                          {'id': 35301, 'sentiment': 'Positive'}]}]}

元数据是对象列表,并且该对象具有嵌套的对象列表。
我想根据主题 id 查询这些行。在此示例中,元数据列表的行长度为 1,主题列表的长度为 1,因此很容易查询

In [30]: Sentence.objects.filter(id=6753315, metadata__0__themes__0__contains={"id": 35299})
Out[30]: <QuerySet [<Sentence: Sentence object>]>

但是元数据和主题的长度可以是任何东西,所以我如何查询这些行以检查该行中是否存在任何主题 ID 以获取任何长度的元数据和主题。

我只想找出所有具有特定主题 id 的行

Sentence.objects.filter(metadata__*__themes__*__contains={"id": 35299})  

我不知道这样写的索引,*以使我的问题易于理解。

4

0 回答 0