2017-07-12 8 views
0

もし私が何か00と何かのようなデータベースに2つのレコードを持っていたら。私は00か何かを書き留めておけば、両方のものを手に入れたい。私が試した:スペースなしのDjangoフィルター

Item.objects.filter(name__icontains="something 00") 

が、それは動作しませんし、私は一つだけの結果を得ます。その他のソリューション?

+0

試し 'Item.objects.filter(name__icontains =" 『何か』、 '00" ) ' – hansTheFranz

+0

[Django:モデルフィールドの値とフィルタのスペースを取り除く方法は?](https://stackoverflow.com/questions/30224415/django-how-to-strip-out-spaces-in-the -model-field-value-and-filter) – rlfrahm

+0

この状況では良いでしょうが、もし何か00 xxなどがあればそれはより複雑になります –

答えて

0

これを試してみてください:

list_of_string = ['something', '00'] 
Item.objects.filter(name__icontains=list_of_string) 

編集

Item.objects.filter(name__iregex=r'(?i)Something[\s\w]+') 
+0

If私は何かのようなデータベースに持っていて、何も表示しないで何かを検索入力に書いています。このソリューションは動作しませんので、 –

+0

うわー。非常に巧妙な解決策。変数部分の宣言と同様です。 「abc = ['something'、 '00'] list_of_string = abc Item.objects.filter(name__icontains = list_of_string) ' – hansTheFranz

+0

@ I.Jokhadzeは更新の回答を参照してください –

0

https://stackoverflow.com/a/30224493/2824391からの回答を撮影し、あなたのケースに変更...

は何をする必要がある任意の空白をトリムですあなたの検索クエリで、その答えの正規表現を使用してください:

search_term = 'something 00' 
Item.objects.filter(name__iregex=r'%s[\s\w]+' % search_term.replace(' ','')) 

something00something 00のいずれかに一致する必要があります。

ちなみに、ここで私は私の正規表現をチェックするために使用する良いウェブサイトは、(私は彼らと提携しない方法で午前)です:http://regexr.com/

+0

それでも動作しません。これは私のフィルタです Q(name__iregex = r '%s [\ s \ w] +'%item_name.replace( ''、 ''))| Q(name__icontains = item_name)| Q(seller__name__icontains = item_name) –

関連する問題