2017-02-23 11 views
2

同じモデルフィルタに__unaccent__searchを使用しようとしていますが、エラーが発生します。Django __unaccentと__searchの組み合わせを参照

ProgrammingError at /autocomplete-games/ function unaccent(tsquery)

does not exist LINE 1: ...ALESCE(UNACCENT("main_game"."title"), '')) @@ (UNACCENT(p... ^HINT: No function matches the given name and argument types. You might need to add explicit type casts.

:私は

Game.objects.filter(title__unaccent__icontains="Pokemon")が正常に動作しますが、私はGame.objects.filter(title__unaccent__search="Pokemon)を使用する場合、私は次のエラーを取得する(「E」を注意してください)用語「ポケモン」に一致する用語「ポケモン」を使用してフィルタを作成しようとしています

私が使用しています:

のPython 3.5

ジャンゴ1.10

のPostgreSQL(unaccent拡張子がインストールされている)

答えて

3

これを行う方法は次のようにデータベースにカスタム検索の設定を定義することです:私はPostgresの専門家ではないです

CREATE TEXT SEARCH CONFIGURATION unaccent (COPY = french); 
ALTER TEXT SEARCH CONFIGURATION unaccent ALTER MAPPING FOR hword, hword_part, word WITH unaccent, simple; 

が、この構成では、私のために動作します。 http://www.nomadblue.com/blog/django/from-like-to-full-text-search-part-ii/

をとDjangoでこれを使用するよりも:詳細については、次のようにチュートリアルをチェック

from django.contrib.postgres.search import SearchVector, SearchQuery 

Game.objects.annotate(unaccent_title=SearchVector('title', config='unaccent')).filter(unaccent_title=SearchQuery('Pokemon', config='unaccent')) 
+0

それは廃止されていない__search' 'のように見え、実際には、PostgreSQLのサポートここでは、ドキュメントごとのようにします。https: //docs.djangoproject.com/ja/1.10/topics/db/search/#postgresql-support - ドキュメントがなぜそれ自体と矛盾しているのか? – Hybrid

+0

Ow、私は、mysqlの検索を非難し、同じバージョンのpostgresを導入したようです:)。私はこれを見て、何かを見つけたら教えてくれます。 –

+0

それはそれを説明する!私にカスタムソリューションを見せていただければ幸いです。奨励金を授与させていただきます。 – Hybrid

関連する問題