棉花糖:根据数据动态选择模式?

2024-06-16 13:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

对于谷歌人来说也是如此

我有两种类型的用户。我需要通过两个模式之一验证用户数据。 我用我的想法编写了很棒的scratch,当然它不起作用

class ExtraType0(Schema):
    nickname = fields.String()


class ExtraType1(Schema):
    id = fields.Integer()


class UserSchema(Schema):
    type = fields.String()
    extra = fields.Method(deserialize="get_extra_schema_by_user_type")

    def get_extra_schema_by_user_type(self, obj):
        if obj == 0:
            # call ExtraType0 scheme and its (de)serialization
            return fields.Nested(ExtraType0())
        else:
            # call ExtraType01scheme and its (de)serialization
            return fields.Nested(ExtraType1())

# correct data
result = UserSchema().load(
    {
        "type": 0,
        "extra": {
           "id": 0
        }
    })

# also correct data
result1 = UserSchema().load(
    {
        "type": 1,
        "extra": {
           "nickname": "user123"
        }
    })

如何正确选择模式取决于加载的type字段数据


Tags: 数据用户idfieldsgetstringschematype