为Flask-Restless API序列化Python Arrow对象

0 python serialization json flask-restless

我目前正在使用Flask-Restless开发应用程序。当我用相应的箭头字段替换我的SQLAlchemy模型的典型DateTime字段时,所有操作都很顺利。这是由于SQLAlchemy-Utils及其ArrowType字段的帮助。

但是,在使用API​​返回这些对象的JSON表示后,我收到以下错误:

TypeError:箭头[2015-01-05T01:17:48.074707]不可序列化JSON

修改模型序列化的理想位置在哪里?是否修改Flask-Restless代码以支持Arrow对象或编写Flask-Restless可以识别并用于检索JSON兼容对象的模型方法?

同时,我还可以编写一个丑陋的后处理器函数,但该解决方案似乎是一个可怕的hack。

下面是带有ArrowType字段的示例模型:

class Novel(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Unicode, unique=True, nullable=False)
    created_at = db.Column(ArrowType, nullable=False)

    def __init__(self, title):
        self.title = title
        self.created_at = arrow.utcnow()
Run Code Online (Sandbox Code Playgroud)

Ali*_*rik 6

箭头现在有一个for_json方法。例如:arrow.utcnow().for_json()