我用SQLAlchemy将这些类作为我的模型。我已经成功地让棉花糖对我的用户对象进行编码,但它不会对嵌套链接对象进行编码。我的 SQLAlchemy 查询正在 fk 上联接链接表,该表工作正常。我无法弄清楚我的嵌套架构出了什么问题以及为什么它无法编码!
class User(Base):
__tablename__ = 'user'
id = Column('id', Integer, primary_key=True)
username = Column('username', String(255), unique=True)
link = relationship("Link", backref='user', lazy='joined')
class Link(Base):
__tablename__ = 'link'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(255))
user_id = Column('user_id', Integer, ForeignKey("user.id"), nullable=True)
class LinkSchema(Schema):
name = fields.Str()
user = fields.Nested('UserSchema')
class UserSchema(Schema):
username = fields.Str()
links = fields.Nested('LinkSchema')
我有一个查询我的数据库的函数,如下所示。这将正确返回用户和链接。
def get_user(user_id):
session = get_session()
try:
user = session.query(User).filter(User.id == user_id)
except exc.SQLAlchemyError:
return False
return user
在我的烧瓶路线中,这就是我正在执行的。我能够正确地取回我的用户信息,但是棉花糖没有对链接部分进行编码。我知道它在那里是因为印刷 link.name[0]。我已经多次查看了文档,根本无法弄清楚出了什么问题。任何提示将不胜感激。
@app.route('/api/user_info/)
def get_user_info():
user = get_user(user_id)
for u in user:
print (u.link[0].name) #this prints the link name so I know its there
schema = UserSchema(strict=True, many=True)
result = schema.dumps(user)
pprint(result.data, indent=2)
return result.data
这是返回的 json。没有链接!想不通为什么。为了简洁起见,我省略了很多专栏。
[{"username": "erick", "role": 1}]
经过数小时的沮丧,我需要"链接"成为"链接",并且在嵌套的用户模式中many=True。