簡體   English   中英

Django Haystack通過外鍵ID進行過濾

[英]Django haystack filtering by foreign key id

我想按default_category.pk過濾搜索查詢。

這是我的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

這是我的查看代碼

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) 2,5,0 (2, 5, 0)

解決方案確實很明顯。 我使用了Simple搜索后端。 這就是我在官方文檔中找到的內容:

該后端不能像其他后端那樣工作。 數據准備不執行任何操作, 高級篩選調用也不起作用。 除非您只想讓Haystack保持沉默,否則您可能真的不希望這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM