Поле Marshmallow любого типа

#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) .