如何在加载期间停止创建新的嵌套行

2024-09-29 17:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我用marshmallowsqlachemy序列化/反序列化我的数据

当我尝试反序列化以下数据(id=1的Model2存在于数据库中,而id=2不存在)时,反序列化程序尝试为id=2创建新行。如果给定的models2 id不存在于数据库中,如何更改此行为以添加错误

输入示例:

input = {
    "id": 1,
    "models2": [{"id": 1}, {"id": 2}]
}

我的模型:

class Model1(db.Model):
    __tablename__ = 'model1'

    id = db.Column(db.Integer, primary_key=True)
    models2 = relationship('Model2', secondary='Model1Model2', backref='models1')

class Model1Model2(db.Model):
    __tablename__ = 'model1_model2'

    id = db.Column(db.Integer, primary_key=True)
    model1_id = db.Column(Integer, ForeignKey('model1.id', ondelete='CASCADE'))
    model2_id = db.Column(Integer, ForeignKey('model2.id'))

class Model2(db.Model):
    __tablename__ = 'model2'

    id = Column(Integer, primary_key=True)
    name = Column(String)

我的架构:

class BaseSchema(ModelSchema):
    class Meta:
        sqla_session = SESSION


class Model2Schema(BaseSchema):
    class Meta(BaseSchema.Meta):
        model = Model2
        dump_only = ('name',)


class Model1Schema(BaseSchema):
    class Meta(BaseSchema.Meta):
        model = Model1
        fields = ('id', 'name')

    models2 = Nested(Model2Schema, many=True, only=('id'))


Tags: idtruedbmodel序列化columnintegermeta

热门问题