0

文字列のリストがあります(たとえばs = ['1995','1996','1997'])。データベース内のすべての行を検索する必要があります。ここで、一部の列の最初の4文字は、そのリスト内の任意の項目(1995-01-01または1996-05-04)と一致します。

見つかりまし__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 に答える