如何在Flask-SQLAlchemy-Marshmallow中更新嵌套对象

问题描述

可以帮我更新Flask-sqlAlchemy-Marshmallow中的嵌套对象。这是模型

父级模型

class ParentModel(db.Model):
    __tablename__ = "parent"

    id = db.Column(db.Integer,primary_key=True)
    parent_name = db.Column(db.String(100),nullable=False)
    
    childrens = db.relationship("ChildrensModel",cascade="all,delete",backref='parent')

    @classmethod
    def find_by_id(cls,_id: int) -> "ParentModel":
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_by_name(cls,name: int) -> "ParentModel":
        return cls.query.filter_by(parent_name=name).first()

    @classmethod
    def find_all(cls) -> List["ParentModel"]:
        return cls.query.all()

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()

儿童模型

class ChildrenModel(db.Model):
    __tablename__ = "children"

    id = db.Column(db.Integer,primary_key=True)
    children_name = db.Column(db.String(100),nullable=False)
    parent_id = db.Column(db.Integer,db.ForeignKey("parent.id") primary_key=True)

    @classmethod
    def find_by_id(cls,_id: int) -> "ChildrenModel":
        return cls.query.filter_by(id=_id).first()

    @classmethod
    def find_by_name(cls,name: int) -> "ChildrenModel":
        return cls.query.filter_by(children_name=name).first()

    @classmethod
    def find_all(cls) -> List["ChildrenModel"]:
        return cls.query.all()

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

    def delete_from_db(self) -> None:
        db.session.delete(self)
        db.session.commit()

儿童模式

class ChildrenSchema(ma.ModelSchema):


    class Meta:
        model = ChildrenModel
        include_fk = True

父模式

class ParentSchema(ma.ModelSchema):

    children= fields.List(fields.nested(ChildrenSchema(dump_only=("parent_id",))),required=True)

    class Meta:
        model = ParentModel
        include_fk = True

这是必需的JSON格式。您能否告诉我如何以以下格式更新现有的嵌套对象。

{
  "parent_name":"parent1","children":[{"children_name":"children_1"},{"children_name":"children_2"}]
}

伙计们谢谢您的时间。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)