Django JSONField使用子字符串过滤数组

kpbpu008  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(155)

我的模型中有一个events JSONField,我想通过key上的值进行过滤。对象创建示例:

MyModel.objects.create(
    name="test", 
    events=[
        {"type": "created", "info": "xxx"}, 
        {"type": "sent", "info": "abc"}, 
    ]
)

所以在events中,我有一个具有相同键但不同值的事件列表。我想通过nameinfo值进行过滤,以实现自动完成功能-因此我需要通过info中的字符串icontains进行过滤。
我计算出的是MyModel.objects.filter(Q(name__icontains='abc') | Q(events__info__0__icontains='abc')),但它只从列表中获取第一个事件-如果info在第二个元素中匹配,那么它不会被放置在结果中。
可以用django orm来做吗?
我想要像MyModel.objects.filter(Q(name__icontains='abc') | Q(events__info__<all>__icontains='abc'))这样的东西

jjjwad0x

jjjwad0x1#

试试这个:

MyModel.objects.filter(event__contains=[{"info": 'abc'}])

相关问题