在django-haystack中更改结果的排序

时间:2012-01-18 09:20:34

标签: django django-haystack

我正在使用django-haystack进行搜索。默认情况下,它首先显示最旧的对象,而我想在最上面显示最新的对象。任何人都可以指导我如何做到这一点? 我的代码示例如下所示:

search_indexes.py

class PostIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    created = indexes.DateTimeField(model_attr='created')

    def get_model(self):
        return Post

    def index_queryset(self):
        return self.get_model().objects.filter(created__lte=datetime.datetime.now())

任何人都可以告诉我确切的文件,我将不得不进行更改和更改?我是否必须在haystack中对query.py文件进行更改? Query.py有

 def order_by(self, *args):
        """Alters the order in which the results should appear."""
        clone = self._clone()

        for field in args:
            clone.query.add_order_by(field)

        return clone

如何更改此内容以显示最新内容?

1 个答案:

答案 0 :(得分:3)

您可以在haystack_urls.py(或其他任何名称)中设置order_by,例如

qs = SearchQuerySet().order_by('-created')

urlpatterns = patterns('haystack.views',
    url(r'^$', SearchView(searchqueryset=qs), name='haystack_search'),
)