SQLAlchemy显示未嵌套的关系



如何获得关系不作为嵌套对象?

当我这样做的时候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'

最新更新