Flask SQLAlchemy通过一个查询获取具有子级的父级

Flask SQLAlchemy通过一个查询获取具有子级的父级,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,具有: 我如何可能通过一个查询获得此结果: from app import db from sqlalchemy.dialects.postgresql import JSON from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey from dataclasses import dataclass @dataclass class Parent(db.Model): __tablename__

具有:

我如何可能通过一个查询获得此结果:

from app import db
from sqlalchemy.dialects.postgresql import JSON
from sqlalchemy.orm import relationship
from sqlalchemy import ForeignKey
from dataclasses import dataclass

@dataclass
class Parent(db.Model):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    children = relationship("Child", lazy='joined')

@dataclass
class Child(db.Model):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer,ForeignKey('parent.id'),nullable=False)
如果我这样做,它会打印所有的子项,但不会将其包含在响应中

[
  Parent {
    ...
    child: Child
  },
  Parent {
    ...
    child: Child
  }
]
(这是一个示例,它假设“订单”是模型上的关系对象。)


如注释中所述,您可以直接在模型上将其定义为具有“lazy”属性的关系的默认行为。

您是否尝试过
children=relationship(“Child”,lazy='joined'))
如前所述?假设我不需要重新运行迁移,它不会改变任何事情。我用更准确的代码更新了我的问题。我在进行连接加载时经常使用这种精确的方法(尽管在许多情况下会返回—一堆较小的查询比一个较大的查询更快)。我确实注意到了一件事——为什么您的模型要用dataclass注释?我一点也不确定这种魔法会如何与sqlalchemy魔法结合。。。不管怎样,测试片段的实际输出是什么?包括“print children”部分和jsonify版本。谢谢你的回答,但在我的例子中它不起作用。我更新了添加导入的问题以及模型的外观。
parents = Parent.query.options(joinedload(Parent.children)).all()

for parent in parents:
    print("CHILDREN: ", parent.children.all())

return make_response(jsonify(parents))
from sqlalchemy.orm import joinedload

query(User).options(joinedload(User.orders))