#python #serialization #marshmallow
#python #сериализация #marshmallow
Вопрос:
Я хочу указать схему marshmallow. Для одного из моих полей я не хочу, чтобы схема проверяла тип, а просто передавала его дальше. Это потому, что тип может быть любым, мы не знаем заранее. Я не вижу возможности marshmallow.fields
для этого. Мы хотим использовать это как десериализатор.
Например
class FilterSchema(Schema):
op = fields.Str(required=True)
val = fields.**Any**(required=True)
Есть ли способ сделать что-то подобное?
Комментарии:
1. Вы могли бы попробовать создать пользовательское поле ( marshmallow.readthedocs.io/en/3.0 /… ) но похоже, что наличие поля «подстановочный знак» сводит на нет цель создания схемы в первую очередь…
2. Я не думаю, что это сводит на нет цель. Вы все еще говорите, что поле должно быть там, и даже что оно обязательно. Вы просто не указываете, что должно быть в нем.
3. Вы также можете попробовать:
val = fields.Raw(required=True)
(см.: marshmallow.readthedocs.io/en/3.0 /… )4.
Raw
это путь. @NJM, вы должны сделать это ответом.
Ответ №1:
Вы можете использовать Raw()
тип поля.
например val = fields.Raw(required=True)
.