将子字符串匹配到django中的字符串列表

时间:2012-12-12 11:27:30

标签: python django

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

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

1 个答案:

答案 0 :(得分: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,mightn't perform well为您提供数据集。使用extra()

手动编写SQL可能会获得更好的性能

奇怪的是,我之前用几乎完全相同的代码回答了another question