Изменение порядка результатов в django-haystack - PullRequest
1 голос
/ 18 января 2012

Я использую 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

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

1 Ответ

3 голосов
/ 18 января 2012

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

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

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