gpt4 book ai didi

python - 如何在 marshmallow-sqlalchemy 中使用嵌套对象加载

转载 作者:太空狗 更新时间:2023-10-29 23:57:56 25 4
gpt4 key购买 nike

我正在使用带 flask 扩展的 marshmallow-sqlalchemy,并尝试使用我的 ModelSchema 类的加载方法。我有这样的东西:

db = SQLAlchemy()
ma = Marshmallow()

#I'm using Application Factorie
def create_app():
...
db.init_app(app)
ma.init_app(app)
...
return app


class BaseSchema(ma.ModelSchema):
class Meta:
sqla_session = db.session

class Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(45), nullable=False)
child_id = db.Column(db.Integer, db.ForeignKey("child.id"), nullable=False)
child = db.relationship("Child")

class ParentSchema(BaseSchema):
class Meta:
model = Parent
child = ma.Nested("ChildSchema")

class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(25), nullable=False)

class ChildSchema(BaseSchema):
class Meta:
model = Child

整体工作完美,查询,插入...但是当我尝试加载一个新的父对象与数据库中的现有子对象时,如:new_parent = ParentSchema().load({'name':'Foo ', 'child' : {'id':1,'name':'Bar'} }) 返回它 AttributeError: 'DummySession' object has no attribute 'query'.

我做错了什么?

最佳答案

我认为您的 BaseSchema 的 Meta 类没有被正确继承。

改变这个

class ParentSchema(BaseSchema):
class Meta:
model = Parent

对此

class ParentSchema(BaseSchema):
class Meta(BaseSchema.Meta):
model = Parent

引用:https://marshmallow-sqlalchemy.readthedocs.io/en/latest/recipes.html (基本模式 I 示例)

关于python - 如何在 marshmallow-sqlalchemy 中使用嵌套对象加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com