Изменение порядка результатов в 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())

Может ли кто-нибудь сказать мне точный файл, где мне нужно будет внести изменения и какие изменения? Нужно ли вносить изменения в файл 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

Как я могу внести изменения в это, чтобы показать последние наверху?


person G Gill    schedule 18.01.2012    source источник


Ответы (1)


Вы можете установить order_by в файле haystack_urls.py (или как бы вы это ни называли) например

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

urlpatterns = patterns('haystack.views',
    url(r'^$', SearchView(searchqueryset=qs), name='haystack_search'),
)
person JamesO    schedule 18.01.2012
comment
Большое спасибо, ДжеймсО, это действительно помогло. - person G Gill; 18.01.2012