根据字典键过滤模型

时间:2019-05-06 07:42:32

标签: django python-3.6 mongoengine

从数据库过滤记录时遇到问题。在我的数据库中,我有包含dictfield的记录。

例如 地区是一本字典,其中包含其他字典,例如

region = {'eastus': {'percentage_change': 0}, 'westus': {'percentage_change': 0}}

并且我想获取eastuswestus

我已经尝试过类似的操作,但是我得到了一个空列表。

MyModel.objects.filter(region__eq='eastus')

对此问题有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我相信您可以使用exists运算符(http://docs.mongoengine.org/guide/querying.html#query-operators

实现
MyModel.objects.filter(region__eastus__exists=True)

关于“或”,您应该使用Q类(http://docs.mongoengine.org/guide/querying.html#advanced-queries),因此:

MyModel.objects.filter(Q(region__eastus__exists=True) | Q(region__westus__exists=True))

如果您使用的键不简单(例如,包含奇特字符或短划线),则可以使用__raw__运算符:

MyModel.objects.filter(__raw__={'region.a-fancy-key': {'$exists': True}})