我在使用Django过滤数组元素时遇到了困难(使用PostgreSQL表)假设我有一个模型MyModel,其字段my_array包含布尔值(类型并不重要),我想检查数组的第一个元素是否为True。
对我来说最自然的方法就是
MyModel.objects.filter(bool_array__0=True)
但是,这会生成以下SQL筛选器
... WHERE bool_array[1] = true::boolean[]
这里的问题是django自动将右侧转换为boolean[]
,并最终将boolean
与boolean[]
进行比较。
我试过使用__in
查找,并将[True]
而不是True
,但也不起作用。
先谢谢你了
1条答案
按热度按时间b0zn9rqh1#
ArrayField
的文档可能会产生误导:如果你不注意,你会得到一个嵌套的数组。在你的模型中,你应该声明:
为了得到一个普通的布尔数组。