我有一个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')
视图/网址对
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
方法,这些方法返回strftime
表示形式('%Y %m %d %H %M'
和'%d %m %Y %H %M'
),包括幼稚和感知日期时间,时间段,&#34;纪元时间& #34;使用CharField
代替DateTimeField
而我无法记住其他内容和所有内容都失败了,除了&#34;纪元时间&#34;版本,但速度非常慢。
作为最后一点,我使用Python 2.7.8,Django 1.6.10,在我尝试进行这种排序之前,索引运行良好(甚至比预期的更好),所以我很确定其余的实施是正确的。
据我所知,对于unicode来说,这是飞快的,但我不知道该怎么做。有什么想法吗?
答案 0 :(得分:0)
感谢大家的反馈,因为当没人在SO上回答你的问题时,反馈主要是“老兄,你说的话没有意义,质疑你的假设并检查一切。”。
因此,在我的情况下,有一个自定义的 Intent aint = new Intent(getApplicationContext(), AlarmReceiver.class);
aint.putExtra("msg", msg);
aint.putExtra("phone", phone);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), id, aint, PendingIntent.FLAG_UPDATE_CURRENT);
被删除,并没有考虑WhooshSearchBackend
。对于任何绊脚石的人来说,DateTimeField
和Whoosh
可以处理Haystack
就好了。如果他们不这样做,请检查您的设置。