如何使用Flask-Restless按日期搜索模型

时间:2015-01-10 02:08:40

标签: python flask flask-restless

根据documentation,搜索查询应如下所示:

GET /api/person?q={"filters":[{"name":"age","op":"ge","val":10}]}

如何比较日期?我试过了:

GET /api/person?q={"filters":[{"name":"date","op":"<=","val":"1/20/2015"}]}

即使有一些日期在2015年1月20日之前,也没有结果。我试过了:

GET /api/person?q={"filters":[{"name":"date","op":">=","val":"1/20/2015"}]}

这会得到所有结果,即使是2015年1月20日之前的结果。

这是用户模型:

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.DateTime)
    type =db.Column(db.String(255))
    email = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    active= db.Column(db.Boolean())
    activated_at = db.Column(db.DateTime())
    roles = db.relationship('Role', secondary=roles_users,
                            backref=db.backref('users', lazy='dynamic'))

查询日期的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

大卫主义是绝对正确的,我不应该说JSON datetime-- JSON本身没有表示日期/日期时间格式的方式 - 它是在通信的发送者/接收者端识别“嘿,我我希望在这里约会,这看起来像是一个约会,我会试着像对待它一样。“

通常,大多数人使用ISO 8601作为JSON中的日期时间表示(2014-10-23T18:25:43.511Z),而Flask-Restless似乎使用dateutil.parse某些传入值解析回日期时间字段 - 但奇怪的是,不是GET的字段。

所以看起来表示你的日期时间值的字符串需要与数据库所期望的相匹配 - 这平均将是ISO 8601格式。