2012-12-12 27 views
0

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

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

回答

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

这将使你SQL类似WHERE year LIKE '1995%' OR year LIKE '1996%' ...;mightn't perform well给出的数据集。您可能会获得更好的性能使用extra()

手动编写SQL奇怪的是,我刚才回答another question与几乎完全相同的代码!

相关问题