如何获得关系不作为嵌套对象?
当我这样做的时候get request:
db.query(self.model).filter(self.model.id == id).first()
我将得到这样的响应:
{
"message": "test",
"id": 96,
"user": {
"name": "test user",
"avatar":"xxx"
"id": 5
}
}
我需要这个格式的回复:
{
"message": "test",
"id": 96,
"name":"test user"
"avatar":"xxx"
}
所以我有多个带有评论的卡片,我这样解决它:
for comment in card.comments:
setattr(comment, "avatar", comment.user.avatar)
setattr(comment, "name", comment.user.name)
每当我需要注释时,我必须遍历它们
我是sqlalchemy的初学者。谁能告诉我如何更好地解决这个问题?
也许我应该在模型上使用的一些参数?或者是response_model模式?
class KanbanComment(Base):
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("user.id"))
user = relationship("User")
如果你添加一个@property
到你的类,你可以访问该属性作为一个"顶层";属性。例如,
class KanbanComment(Base):
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("user.id"))
user = relationship("User")
@property
def name(self):
return self.user.name
with Session(engine) as sess:
a_comment = sess.get(KanbanComment, 96)
print(repr(a_comment.name)) # 'test user'