У меня не было проблем с использованием вложенных полей в моем приложении для фляг при использовании marshmallow-sqlalchemy с Flask-SQLAlchemy. Теперь, когда я перешел с Flask-SQLAlchemy только на SQLAlchemy (по нескольким несущественным причинам), мои вложенные поля больше не отображают никаких данных. Я чувствую, что это может иметь какое-то отношение к сеансу SQLAlchemy, который не передается во вложенные поля.
Мой проект выглядит следующим образом:
engine = create_engine(config.SQLALCHEMY_DATABASE_URI, echo=True)
Session = orm.scoped_session(orm.sessionmaker())
Session.configure(bind=engine)
Base = declarative_base(bind=engine)
class PodcastModel(Base):
__tablename__ = 'podcasts'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
host = db.Column(db.String(80))
episodes = relationship(EpisodeModel, backref='episode', lazy='dynamic')
@classmethod
def dump(cls, podcast):
podcast_schema = PodcastSchemaNested()
podcast_output = podcast_schema.dump(podcast).data
return podcast_output
class EpisodeModel(Base):
__tablename__ = 'episodes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200))
length = db.Column(db.Float(precision=2))
podcast_id = db.Column(db.Integer, db.ForeignKey('podcasts.id', ondelete='CASCADE'))
class BaseSchema(ModelSchema):
class Meta:
sqla_session = Session
ordered = True
class PodcastSchemaNested(BaseSchema):
id = fields.Integer()
name = fields.Str()
host = fields.Str()
episodes = fields.Nested('EpisodeSchema', many=True)
class EpisodeSchema(BaseSchema):
id = fields.Integer()
name = fields.Str()
length = fields.Float()
И вывод json следующий:
{
"id": 1,
"name": "Podcast Name",
"host": "Podcast Host",
"episodes": [
]
}
Я боролся с этой проблемой уже несколько часов, и любой вклад в то, почему вложенные поля не отображают никаких данных, был бы очень признателен. Благодарю вас!