我有一组搜索文档,它们有一个我想要排序的DateField。此字段中的值还包含时间。当我尝试按此字段降序排序时,我会正确排序日期,但似乎时间被忽略,即:
{
"results": [
{
"photo_create_date": "2016-01-04T16:51:39.096000",
},
{
"photo_create_date": "2016-01-04T17:55:36.483000",
},
{
"photo_create_date": "2016-01-04T22:46:37.141000",
},
{
"photo_create_date": "2016-01-04T16:51:13.450000",
},
{
"photo_create_date": "2016-01-04T22:44:10.289000",
},
{
"photo_create_date": "2016-01-04T22:36:28.252000",
},
{
"photo_create_date": "2015-12-30T18:06:34.511000",
}
]
}
知道如何修复此问题或者这是GAE搜索API的限制吗?
答案 0 :(得分:1)
看起来好像,这似乎是我必须推出自己的解决方案的一个错误。这是我使用的:
create_date_aware = pytz.utc.localize(item.create_date)
epoch_datetime = datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)
create_timestamp = (create_date_aware - epoch_datetime).total_seconds()
您所要做的就是将此值存储为NumberField,并且效果非常好。在弄清楚如何做到这一点时,有一些功劳归于这个问题:
python - datetime with timezone to epoch
以下是我向Google提交的错误:
https://code.google.com/p/googleappengine/issues/detail?id=12650&thanks=12650&ts=1452021081
他们拒绝了这项工作,因此我创建了一个功能请求:
https://code.google.com/p/googleappengine/issues/detail?id=12651&thanks=12651&ts=1452038680
答案 1 :(得分:0)
虽然看起来你已经有了解决方法,但你有几个选择:
如果您需要保留时区,则需要使用多字段方法,以时间/毫秒为单位的规范形式进行比较。