我正在做一个使用Tortoise-ORMv0.18.1和SQLite db的项目。我需要在json字段中找到一个具有给定值的条目。
我有个这样的模特:
class Foo(Model):
name = fields.CharField(max_length=50)
boo = fields.JSONField()这些条目如下所示:
Foo(name='First', boo=[1, 2, 3])
Foo(name='Second', boo=[4, 5, 6])
Foo(name='Third', boo=[4, 7, 8])我期待过滤在"boo“字段中有"4”的条目。
我试过:
entries = await Foo.filter(boo_contains=4)但是entries包含这三个对象,而不仅仅是Second和Third。
有什么办法可以过滤掉吗?
文档中说,"contains“对于文本字段和 postgresql和MySQL驱动程序是有效的,因此,除了查询所有字段,然后手动筛选或进行原始SQL查询之外,没有其他方法,但我认为值得在这里询问是否存在。
我想另一个选择是让boo字段成为一个TEXTField,然后只使用"contains“操作符,我不确定它是否会是一个更好的选项。
发布于 2022-05-30 05:49:18
尝尝这个。
entries = await Foo.filter(boo__contains=[4])https://stackoverflow.com/questions/71384303
复制相似问题