按日期时间排序django haystack结果(哇哇叫后端)

时间:2015-04-23 19:03:19

标签: django datetime search django-haystack whoosh

我有一个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来说,这是飞快的,但我不知道该怎么做。有什么想法吗?

1 个答案:

答案 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。对于任何绊脚石的人来说,DateTimeFieldWhoosh可以处理Haystack就好了。如果他们不这样做,请检查您的设置。