2017-11-11 6 views
0

HI申し訳ありませんなぜセキレイ検索リターンPostgresSearchResult検索した後?Wagtail(django)のvalues_listはどのように使用できますか?私<strong>貧しい</strong>英語</p> <p>ため

は、私が欲しいPageQuerySet

iはページ・パスのリストを(取得したい私は、検索後values_list使用することはできませんので、DjangoのPostgresの検索バックエンドのような

私はページの両親(カテゴリページを見つけたいので)パスで私が知っている)

、それは

動作しないので、私は、検索前にvalues_list使用することはできませんが、私はForloopを使用することができますが、これはEACのために約5秒かかります時間の実行

私のコードは非常に簡単です:

ジャンゴウェイ:#Work

ProductPage.objects.filter(title__search="phone").values_list('path') 

セキレイウェイ:#NotWork :(

ProductPage.objects.search(query).values_list('path') 

答えて

1

それは少しあります直感的なカウンターですが、常に最後にsearch(query)コールを置く必要があります。

Search docsを読むと、あなたはノートが表示されます。

  • search()方法は、(バックエンドによって異なります)、インスタンスセキレイのSearchResultsクラスのいずれかの にあなたのQuerySetを変換します。 これは、search()を呼び出す前にフィルタリングを実行する必要があることを意味します。

これは、あなたが次のことを行う必要があります結果のほとんどが同じセットを取得することを意味します

query = 'phone' 
ProductPage.objects.values_list('path').search(query) 

searchが最後の呼び出しであることに注意してください。検索は引き続き期待どおり機能しますが、セットアップ時にも同様の状況がテストされています。

values()values_list()filter()セキレイsearch()がクエリセットを受け取り、非クエリセットオブジェクトを返すように全ての戻りクエリセット。実際のデータベースquerying only happens when you iterate (or use) a QuerySetでは、QuerySet関数の順序は関係ありません。

関連する問題

 関連する問題