按日期时间对 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
,它被剥离并且没有考虑 DateTimeField
s。对于遇到此问题的任何人,Whoosh
和 Haystack
可以很好地处理 datetime
。如果他们不这样做,请检查您的设置。
我有一个 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
,它被剥离并且没有考虑 DateTimeField
s。对于遇到此问题的任何人,Whoosh
和 Haystack
可以很好地处理 datetime
。如果他们不这样做,请检查您的设置。