将请求中过滤器传递的值更改为Tastypie

时间:2013-10-03 09:10:41

标签: django tastypie

我想允许我的API的使用者使用auto_now = True在datetimefield上进行过滤。需要注意的是,我希望他们能够使用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]."
]

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

基于可以找到here的内容的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