我有一个带有JSONField的模型,需要只选择在jsonb中有特定值嵌套的对象。从Django文档中,我知道你可以使用contains,但是Postgres @>操作符不会递归到结构中。我想用@? '$.** ? (@.mykey == "myValue")'来过滤。myKey和myValue在我的代码中是文字,它们不是用户输入。
contains
@>
@? '$.** ? (@.mykey == "myValue")'
myKey
myValue
0lvr5msh1#
你总是可以写原始的SQL。
raw_queryset = MyModel.objects.raw(""" SELECT * FROM myapp_mymodel WHERE jsonfield_name @? '$.** ? (@.mykey == "myValue")' """)
但是有一堆caveats可以使用这些。
1条答案
按热度按时间0lvr5msh1#
你总是可以写原始的SQL。
但是有一堆caveats可以使用这些。