2016-05-23 3 views
1

をしてください仕事のトラブルでは役立ちません:ジャンゴ - フィルタ(__icontains)は、

class SearchResultView(TemplateView): 
    template_name = "search_result.html" 

    def get_context_data(self, **kwargs): 
     context = super(SearchResultView, self).get_context_data(**kwargs) 
     location = self.request.GET['location'] 
     locations_searched = Location.objects.filter(name__icontains=location) 
     context['locations_searched'] = locations_searched 
     return context 

class AdvancedSearchForm(forms.Form): 
    location = forms.CharField(label=u"Локация:") 

場所フィールドに大文字の単語を入力する私はビューの結果を参照することができますが、大文字でないとき - 何もに示されていませんビュー

ありがとう!

+1

SQliteデータベースを使用していますか? – solarissmoke

答えて

2

私はあなたがSQLiteデータベースを使用していて、入力にASCII以外の文字がいくつかあると思います。 SQLiteからFAQs

大文字と小文字を区別しないUnicode文字のマッチングは機能しません。 SQLiteのデフォルト設定では、ASCII文字の大文字と小文字を区別しない比較しかサポートしていません。これは、Unicodeの大文字と小文字を区別しない比較や大文字小文字変換を行うには、SQLiteライブラリのサイズをほぼ倍にするテーブルとロジックが必要となるためです。

Djangoのdocumentationも、この言及:すべてのSQLiteのバージョンの

を文字列のいくつかのタイプに一致するようにしようとしたときに、いくつかのわずか直感に反する 振る舞いがあります。これらは、iexactの使用時に がトリガーされているか、クエリーセットにフィルタが含まれています...

+0

ありがとう!それは私が自分でこれを実現しなければならないことが判明しますか?大文字/小文字の変換を介している可能性がありますか?または私はちょうどDBを変更する必要があります:) – Dennis

+0

プロダクションでSQliteを使用しますか(推奨しません!)?そうでなければ、PostgresやMySQLのような本番データベースに切り替えると問題は消えてしまいます。それ以外の場合は、入力をフィルターに渡す前に手動で入力を小文字にする必要があります。 – solarissmoke