如何直接将 Flask 的 jsonify 与 FireO Models 等自定义类一起使用?

ur3*_*r3k 2 python serialization flask jsonify

我正在使用 Flask 版本 2.3.2 和 FireO ORM 2.1.0

FireO 模型不直接兼容 Flask 的 jsonify。这意味着它们默认情况下不可序列化,需要在将它们传递给 jsonify 之前将其转换为字典。

前任:

users_dicts = [user.to_dict() for user in users]
return jsonify(users_dicts), 200

# or 

return jsonify(user.to_dict()), 200
Run Code Online (Sandbox Code Playgroud)

所以我的想法是扩展 FireO 模型或 Flask,这样我就可以这样做:

jsonify(users), 200  # Users is a FireO QueryIterator
jsonify(user), 200   # User is a FireO model
Run Code Online (Sandbox Code Playgroud)

chr*_*oon 5

我认为如果您覆盖DefaultJSONProvider.dumps,该函数只会为顶级对象调用一次,因此任何委托/递归都必须手动完成。

我更轻松地为以下内容提供静态覆盖DefaultJSONProvider.default

class ModelProvider(DefaultJSONProvider):

    @staticmethod
    def default(obj):
        if isinstance(obj, Model):
            return obj.to_dict()
        else:
            return DefaultJSONProvider.default(obj)
Run Code Online (Sandbox Code Playgroud)