Python 在to_json方法中加载关系

Python 在to_json方法中加载关系,python,python-3.x,flask,sqlalchemy,flask-sqlalchemy,Python,Python 3.x,Flask,Sqlalchemy,Flask Sqlalchemy,我有一个相当基本的CRUDMixin class CRUDMixin(object): """ create, read, update and delete methods for SQLAlchemy """ id = db.Column(db.Integer, primary_key=True) @property def columns(self): return [ c.name for c in self.__table__.colu

我有一个相当基本的
CRUDMixin

class CRUDMixin(object):
    """ create, read, update and delete methods for SQLAlchemy """
    id = db.Column(db.Integer, primary_key=True)

    @property
    def columns(self):
        return [ c.name for c in self.__table__.columns ]

    def read(self):
        """ return json of this current model """
        return dict([ (c, getattr(self, c)) for c in self.columns ])

    # ...
对于像
Article
类这样的将子类化的类,它可能与另一个类有关系,如下所示:

author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
唯一真正的问题是,它不会在json中返回任何用户详细信息。理想情况下,json应该如下所示:

{
  'id': 1234,
  'title': 'this is an article',
  'body': 'Many words go here. Many shall be unread. Roman Proverb.',
  'author': {
    'id': 14
    'name': 'Thor',
    'joined': October 1st, 1994
  } 
}
现在,它只会给出
作者id:14


我是否可以检测列是否是关系并以这种方式将其作为json加载?

您必须通过添加以下内容来设置整个关系

author = db.relationship("Author") # I assume that you have an Author model
然后,对于json结果,您有不同的处理关系的方法

请看这两个回答:

您还可以看看flask restful,它提供了一个方法/装饰器(marshal_with),可以用嵌套对象(关系)很好地封送结果