在不验证缺失字段的情况下使用 Marshmallow 加载 PATCH 数据
Load PATCH data with Marshmallow without validating missing fields
我正在尝试为以下 SQLAlchemy 模型和 Marshmallow-SQLAlchemy 模式实施 PATCH
路由。我想更新 description
、address
,或同时更新两者。
当我发送数据中唯一的一个字段并尝试加载它时,Marshmallow 说另一个字段丢失了。如何在不验证缺失字段的情况下使用 Marshmallow 加载补丁数据?
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False, unique=True)
password = db.Column(db.String(80))
description = db.Column(db.String(180))
address = db.Column(db.String(180))
class UserSchema(ma.ModelSchema):
class Meta:
model = UserModel
load_only = ("password",)
dump_only = ("id",)
{
"description": "New Description"
}
user_data = user_schema.load(request.get_json())
{
"username": [
"Missing data for required field."
]
}
因为它是 PATCH,您可以将模型实例和标志 partial=True
传递给架构。
user_data = user_schema.load(request.get_json(), instance=instance, partial=True)
我正在尝试为以下 SQLAlchemy 模型和 Marshmallow-SQLAlchemy 模式实施 PATCH
路由。我想更新 description
、address
,或同时更新两者。
当我发送数据中唯一的一个字段并尝试加载它时,Marshmallow 说另一个字段丢失了。如何在不验证缺失字段的情况下使用 Marshmallow 加载补丁数据?
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False, unique=True)
password = db.Column(db.String(80))
description = db.Column(db.String(180))
address = db.Column(db.String(180))
class UserSchema(ma.ModelSchema):
class Meta:
model = UserModel
load_only = ("password",)
dump_only = ("id",)
{
"description": "New Description"
}
user_data = user_schema.load(request.get_json())
{
"username": [
"Missing data for required field."
]
}
因为它是 PATCH,您可以将模型实例和标志 partial=True
传递给架构。
user_data = user_schema.load(request.get_json(), instance=instance, partial=True)