2016-10-29 6 views
0

default_category.pkで検索クエリをフィルタリングしたいですか?ここで外部キーIDによるフィルタリングDjango haystack

は私にSearchIndexです:

class ProductIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 
    content_auto = indexes.EdgeNgramField(model_attr='content') 
    default_category = indexes.IntegerField() 

    def get_model(self): 
     return Product 

    def index_queryset(self, using=None): 
     return self.get_model().objects.all() 

私はここで

default_category = indexes.IntegerField(model_attr='default_category__pk')

def prepare_default_category(self, obj): return obj.default_category.pk

の両方を試してみました私の見解コード

です0

products = SearchQuerySet().models(Product).filter(content=auto_query, default_category=category_id) しかし、このクエリーセットは空です。フィルタからdefault_category=category_idを削除すると、リストは空ではありません。そして、私はdir(products[0])を参照しようとした場合、

[…, amount', 'app_label', 'brand', 'category_id', 'content_type', 'default_category_id', 'description', 'distance', 'get_additional_fields', 'get_stored_fields', 'id', 'log', 'model', 'model_name', 'object', 'pk', 'price', 'sale', 'score', 'searchindex', 'shop_id', 'stored_fields', 'title', 'verbose_name', 'verbose_name_plural']

だからここにありますが、いくつかのフィールド、にSearchIndexおよびフィールドdefault_category_idに記述されていないものであり、それはからここで私は、知らない(いつものようですNone)。

ここで私は間違っていますか?多分私はproduct_text.txtに何かを書く必要があるか、何か重要なことを理解していませんか?

私はdjango-1.9.8を使用し、haystackのバージョンは(2, 5, 0)です。

答えて

0

解決策は本当に明白でした。私はSimple検索バックエンドを使用しました。これは私が公式の文書で見つけたものです。

このバックエンドは他のバックエンドのようには機能しません。 データ準備は何もしません& 高度なフィルタリングコールは機能しません。 Haystackを静かにしたい環境にいない限り、おそらくこれを望んでいないでしょう。

関連する問題