按日期时间对 django haystack 结果进行排序(whoosh 后端)

Sort django haystack results by datetime (whoosh backend)

我有一个 SearchIndex,我想根据 DatetimeField 对其结果进行排序。但是,当我尝试 manage.py rebuild_index 时,我收到 ValueError 抱怨日期时间是...日期时间。

以防万一,我使用时区和 pytz,但对于我想要的排序,时区并不重要,我只想要 newest first 那种东西。

指数

我删除了一些不相关的字段。

class ArticleIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    publish_date = indexes.DateTimeField(model_attr='publish_date')

view/url对

posts_sqs = SearchQuerySet().order_by('-publish_date')

urlpatterns += patterns(
    'haystack.views',

    url(r'^search/$', search_view_factory(
        view_class=PostsSearchView,
        template='pages/search.html',
        searchqueryset=posts_sqs,
        form_class=ThreeCharMinSearchForm),  # a custom form
    name='pages.search'),

)

rebuild_index异常

 ValueError: datetime.datetime(2015, 1, 23, 16, 31, 28, tzinfo=<UTC>) is not unicode or sequence

我已经尝试实现 prepare_publish_date 方法,这些方法 return strftime 表示('%Y %m %d %H %M''%d %m %Y %H %M')具有天真和有意识的日期时间,时间元组, "epoch times" 用 CharField 而不是 DateTimeField 我不记得还有什么其他的都失败了,除了 "epoch time" 版本,虽然它非常慢。

最后一点,我使用 Python 2.7.8,Django 1.6.10,在我尝试进行排序之前,索引运行良好(甚至比预期的更好),所以我我很确定其余的实现是正确的。

我知道 Whoosh 需要 unicode,但我不知道该怎么做。有什么想法吗?

感谢大家的反馈,因为SO上没人回答你的问题,反馈基本就是"Dude, what you 're saying doesn't make sense, question your assumptions and check everything.".

所以,在我的例子中,有一个自定义的 WhooshSearchBackend,它被剥离并且没有考虑 DateTimeFields。对于遇到此问题的任何人,WhooshHaystack 可以很好地处理 datetime。如果他们不这样做,请检查您的设置。