Загрузка данных PATCH с помощью Marshmallow без проверки пропущенных полей - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь реализовать маршрут PATCH для следующей модели SQLAlchemy и схемы Marshmallow-SQLAlchemy.Я хочу обновить description, address или оба.Когда я отправляю только одно поле в данных и пытаюсь загрузить его, Зефир говорит, что другое поле отсутствует.Как я могу загрузить данные патча с помощью 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."
    ]
}

1 Ответ

1 голос
/ 21 сентября 2019

Поскольку это PATCH, вы можете передать в вашу модель экземпляр и флаг partial=True.

user_data = user_schema.load(request.get_json(), instance=instance, partial=True)
...