首页 > 解决方案 > flask_marshmallow 阻止加载新实体,但允许加载现有实体

问题描述

Marshmallow 模式有一个dump_only选项可以防止在load事件期间反序列化该属性中的内容。

例如:

class UserSerializationSchema(ma.ModelSchema):
    class Meta:
        model = User

    messages = fields.Nested(MessageSerializationSchema, dump_only=True)

如果它们已经存在,我们希望让 marshmallow 在这些字段中加载 orm 对象,但我们不希望允许通过反序列化创建新对象。Flask-marshmallow 确实加载现有对象而不创建新对象,例如,以下 dict when loadis run 将创建一个具有指定的新用户email并将其与现有消息与uid1 相关联:

{ 
    'email': 'email@email.com',
    'messages': {
        'uid': 1
    }
  }

dump_only不幸的是True,在现场时,上述功能不起作用。是否可以告诉棉花糖允许与现有对象关联,但不允许通过反序列化创建新对象?

标签: pythonflasksqlalchemymarshmallow

解决方案


推荐阅读