Python Jsonify烧瓶sqlalchemy烧瓶中的多对一关系

Python Jsonify烧瓶sqlalchemy烧瓶中的多对一关系,python,json,flask,flask-sqlalchemy,flask-restful,Python,Json,Flask,Flask Sqlalchemy,Flask Restful,我试图用flask restful制作rest API,我使用flask sqlalchemy作为ORM class Post(db.Model): __tablename__ = 'post' postid = db.Column(db.Integer,primary_key=True) post = db.Column(db.String(64)) userid = db.Column(db.Integer,db.ForeignKey('user.userid')) #serialize

我试图用flask restful制作rest API,我使用flask sqlalchemy作为ORM

class Post(db.Model):
__tablename__ = 'post'
postid = db.Column(db.Integer,primary_key=True)
post = db.Column(db.String(64))
userid = db.Column(db.Integer,db.ForeignKey('user.userid'))

#serialize property used for serializing this class to JSON
@property
def serialize(self):
    return {
        'postid': self.postid,
        'post': self.post,
        'author':self.author
    }

现在我正试图用这个来制作json

class PostList(Resource):
    def get(self):
        posts = DL_models.Post.query.all()
        posts = [post.serialize for post in posts]
        return { 'posts': posts }

api.add_resource(PostList, '/twitter/api/v1.0/posts', endpoint = 'posts')
当我将Post中的序列化方法更改为

@property
def serialize(self):
    return {
        'postid': self.postid,
        'post': self.post,
        'author':self.postid
    }
这将返回预期的json输出,但当我更改为“author”:self.author时,我收到一个错误

TypeError: <app.DL_models.User object at 0x7f263f3adc10> is not JSON serializable
TypeError:不可序列化JSON
我知道我也必须对这些嵌套对象调用serialize,但我不知道如何做


或者请分享您在sqlalchemy中编码关系的经验。

这是一个赌注,但您是否尝试过以下方法

“作者”:self.author.username


从错误消息中,我猜它正在传递给用户,但不知道您想从中得到什么。

既然您已经在使用Flask Restful,您是否考虑过使用其内置功能


但是,对于封送复杂的数据结构,我发现这样做的效果要好上千倍,甚至可以简化其他序列化程序中的嵌套。还有一个Flask扩展,用于检查端点和输出URL。

我已经尝试过了,它会起作用。但这只会给出那个用户名。我想要的是一个嵌套结构,其中作者应该拥有关于该用户的所有详细信息。谢谢你的回复!!谢谢!!你救了我一天。不知何故,我错过了Flask restful的内置数据封送解决方案,它可以按预期工作。另一个替代方案,在本文中使用BaseModel类详细介绍:
TypeError: <app.DL_models.User object at 0x7f263f3adc10> is not JSON serializable