145

django のこの SQL ステートメントに相当するものは何ですか?

SELECT * FROM table_name WHERE string LIKE pattern;

これをdjangoで実装するにはどうすればよいですか? 私は試した

result = table.objects.filter( pattern in string )

しかし、それはうまくいきませんでした。これを実装するにはどうすればよいですか?

4

6 に答える 6

271

__containsor __icontains(大文字と小文字を区別しない) :

result = table.objects.filter(string__contains='pattern')

同等の SQL は次のとおりです。

SELECT ... WHERE string LIKE '%pattern%';
于 2013-08-09T06:00:54.177 に答える
43

falsetru によって言及された contains および icontains のようなクエリを作成しますSELECT ... WHERE headline LIKE '%pattern%

それらに加えて、同様の動作をする次のものが必要になる場合があります: startswithistartswithendswithiendswith

作る

SELECT ... WHERE headline LIKE 'pattern%

また

SELECT ... WHERE headline LIKE '%pattern

于 2015-11-26T13:38:41.150 に答える
9
result = table.objects.filter(string__icontains='pattern')

フィールド内の文字列の大文字と小文字を区別しない検索。

于 2016-04-01T02:45:20.260 に答える
2

完全な例: 文字列フィールド名 file_name を持つ DjangTable というテーブルがあり、mysql の文字列 file_name のスペースに一致するクエリに相当する Django フィルターを作成するとします。

SELECT * FROM DjangTable WHERE file_name LIKE '% %' 
class DjangTable(UTModel):


    ...
    file_name = models.CharField(max_length=255, null=False)
    ...

Pythonを使用するDjangoでは、次のようになります。

pattern = ' ' # same as mysql LIKE '% %'
DjangTable.objects.filter(file_name__contains=pattern)
于 2021-01-25T09:34:57.737 に答える