Параметр зефира Python во вложенном - PullRequest
0 голосов
/ 25 октября 2019

Я использую библиотеку в течение короткого времени. Я искал, но не могу решить проблему.

У меня есть две схемы:

class SonSchema(Schema):
    paramter1 = fields.Str
    parameter2 = fields.Str

class FatherSchema(Schema):
    son = fields.Nested(SonSchema)

Тогда у меня есть функция загрузки:

flag = True
schema = FatherSchema().load(response)

Что мне нужно, так это в зависимости от параметра Flag в SonSchema проверить некоторый параметр, например, если flag = True, тогда параметр1 должен быть в ответе (с @validation_schema).

Я действительно не знаюкак передать параметр в экземпляре схемы, чтобы получить SonSchema. У вас есть идеи?

1 Ответ

0 голосов
/ 30 октября 2019

Возможно, вам будет лучше использовать разные схемы в зависимости от flag. Вы можете использовать наследование, чтобы минимизировать дублирование.

class SonSchema(Schema):
    paramter1 = fields.Str
    parameter2 = fields.Str

class FatherSchema(Schema):
    son = fields.Nested(SonSchema)

class ValidatedSonSchema(SonSchema):
    @validates_schema
    def validation_method(self, data, kwargs):
        ...

class ValidatedFatherSchema(FatherSchema):
    son = fields.Nested(ValidatedSonSchema)

flag = True
schema = ValidateFatherSchema if flag else FatherSchema
result = schema().load(response)
...