0

我想允许我的 API 的使用者使用 auto_now=True 过滤日期时间字段。需要注意的是,我希望他们能够使用 UNIX 格式(即:1380783641 而不是 2013-10-02T16:46:24.030321 这是默认格式。)

我已经使该字段脱水,以便将其渲染为:

    def dehydrate_created_on(self, bundle):

        return bundle.data['created_on'].strftime('%s')

如何对过滤请求中传递的值执行相同操作?

/api/v1/model/?created_on__gt=1380783641

这将返回一个 ValueError :(法语)

"error": [
"Le format de la valeur « 1380783641 » n'est pas valide. Le format correct est AAAA-MM-DD HH:MM[:ss[.uuuuuu]][FH]."
]

谢谢你的帮助。

4

1 回答 1

0

基于这里可以找到的一个 hacky 解决方法是重新定义该build_filter方法:

def build_filters(self, filters=None):
    if filters is None:
        filters = {}
    orm_filters = super(YourResource, self).build_filters(filters)
    for filt in orm_filters:
        if filt.startswith('created_on'):
            orm_filters[filt] = datetime.datetime.fromtimestamp(float(filters[filt]))
    return orm_filters
于 2013-10-03T10:39:58.567 回答