django-haystack order - 我该如何处理?

Bar*_*tek 9 django search django-haystack

我在我的网站上使用django-haystack搜索页面.我基本上已经完成了,但对订购不太满意,不太确定haystack如何决定如何订购.

我知道我可以通过使用order_by覆盖SearchQuerySet 但完全超越它.假设我想强制搜索按库存(BooleanField)进行排序,以便库存中的产品显示在顶部,但随后会像通常那样执行其他操作.我怎么做?

我试过把order_by('-in_stock', 'content')图形内容当作默认使用的内容,但它产生了非常不同的结果,如果我只是让它做自己的排序.

感谢您对此事的任何意见!

die*_*us9 19

您的search_indexes.py中必须有一个带in_stock的索引:

class YourModel(indexes.SearchIndex):
    in_stock = indexes.BooleanField(model_attr='model_in_stock')
Run Code Online (Sandbox Code Playgroud)

并在你的网址:

sqs = SearchQuerySet().models(YourModel).order_by('-in_stock', 'score') # score is a field of haystack
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以先显示结果,如果它们有库存,然后是分数!