我有SQLAlchemy声明的以下模型类:
class User(Base):
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False, unique=True)
created_at = Colmn(DateTime, nullable=False, default=func.now())
class Post(Base):
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey(User.id), nullable=False)
user = relationship(User, backref=backref('posts', lazy='dynamic'))
title = Column(String, nullable=False)
body = Column(Text, nullable=False)
created_at = Colmn(DateTime, nullable=False, default=func.now())
Run Code Online (Sandbox Code Playgroud)
正如我所引用的,这些模型有一个关系,其backref命名为postsset-enabled(通过lazy='dynamic'选项).因为一些用户可能拥有大量帖子而大多数用户没有.
有了这些模型,我试过joinedload了User.posts,但我遇到的错误:
>>> users = session.query(User).options(joinedload(User.posts))[:30]
Traceback (most recent call last):
...
InvalidRequestError: 'User.posts' does not support object population - eager loading cannot be applied.
Run Code Online (Sandbox Code Playgroud)
有办法解决这种情况吗?我需要遵循以下两个功能: …