У меня есть следующая схема и данные:
from marshmallow import Schema, fields, INCLUDE
class MarshmallowSchema(Schema):
field1 = fields.Str()
field2 = fields.Str()
json = {
"field1":"string1",
"field2":"string2"
}
data = MarshmallowSchema().load(json)
Работает как положено: проверьте все поля, если есть какой-либо новый недокументированный параметр, возникает ошибка:
json = {
"field1":"string1",
"field2":"string2",
"field3":"string3"
}
data = MarshmallowSchema().load(json)
ValidationError: {'field3': ['Unknown field.']}
Что я хочу сделать:
Я не хочу брать еще 1 дополнительных конкретных параметров. Я не хочу создавать новую схему, потому что она мне нужна только в одном месте. Кроме того, я не хочу менять эту схему (добавить этот параметр) также потому, что она мне нужна только в одном месте моего кода.
Я нашел следующее решение:
data = MarshmallowSchema().load(json, unknown=INCLUDE)
Добавляет все неизвестные параметры к данным. Но как я могу добавить только один конкретный, например:
data = MarshmallowSchema().load(json, unknown='field17')
Если неизвестное поле равно field17
, оно добавляет его, в противном случае возникает ValidationError
.