0

我有一个字符串列表(比如s = ['1995','1996','1997'])。我需要在我的数据库中查找所有行,其中某些列的前四个字符匹配该列表中的任何项目(例如1995-01-011996-05-04)。

Found __in,但它找到完全匹配。

4

1 回答 1

3
import operator
years = ['1995','1996','1997', ...]
query = reduce(operator.or_, [Q(year__startswith=year) for year in years])
results = queryset.filter(query)

这将为您提供类似于在给定数据集WHERE year LIKE '1995%' OR year LIKE '1996%' ...;可能表现不佳的 SQL 。使用手动编写 SQL 可能会获得更好的性能extra()

奇怪的是,我刚刚用几乎完全相同的代码回答了另一个问题!

于 2012-12-12T11:34:38.500 回答