类型错误:类型的对象不可 JSON 序列化

unk*_*own 6 serialization json flask flask-restful

我是rest用 Flask写的flask-marshmallow

模型.py

class Application(db.Model):
    __tablename__ = 'applications'

    id = db.Column(db.String(), primary_key=True)
    name = db.Column(db.String())
    versions = db.relationship('Version', backref='application', lazy=True)

    def __repr__(self):
        return '<application {}>'.format(self.name)


class Version(db.Model):
    __tablename__ = 'versions'

    id = db.Column(db.String(), primary_key=True)
    file = db.Column(db.String(80), nullable=True)
    application_id = db.Column(db.Integer, db.ForeignKey('applications.id'))
Run Code Online (Sandbox Code Playgroud)

谢马斯.py

class ApplicationDetailSchema(ma.Schema):
    class Meta:
        fields = ('id', 'name', 'versions')
Run Code Online (Sandbox Code Playgroud)

路线.py

@bp.route("/<id>")
def application_detail(id):
    application = Application.query.get(id)
    result = application_detail_schema.dump(application)
    return jsonify(result)
Run Code Online (Sandbox Code Playgroud)

类型错误:“版本”类型的对象不可 JSON 序列化

sta*_*ekz 1

您可能想使用ModelSchema而不是Schema.

class ApplicationDetailSchema(ma.ModelSchema):
    class Meta:
        model = Application
        fields = ('id', 'name', 'versions')
Run Code Online (Sandbox Code Playgroud)

ModelSchema默认情况下,将相关外键对象转储为可 JSON 序列化的 id 列表。