【问题标题】:Pydantic defining multiple variables to one fieldPydantic 为一个字段定义多个变量
【发布时间】:2021-08-16 18:49:45
【问题描述】:

如何编写我的Request 类来说明有效负载可以是Union[EcrPayload]Union[S3Payload]

class EcrPayload(CamelModel):
    repository_name: str
    version: str

class S3Payload(CamelModel):
    bucket_name: str
    object_key_name: str

class Request(CamelModel):
    payload: Union[EcrPayload]

【问题讨论】:

  • 尝试:有效载荷:Union[EcrPayload, S3Payload]

标签: python pydantic


【解决方案1】:

只需将Union 与您希望包含的两个类一起使用:

class Request(CamelModel):
    payload: Union[EcrPayload, S3Payload] # accepts ECR and S3 payloads, but nothing else

请注意,这意味着成员变量 payload 必须是 EcrPayloadS3Payload 的一个实例,但没有别的

如果您希望包含任何类型的 CamelModel(可能包括新模型 EcsPayloadLambdaPayload 或您将来可能定义的其他模型),您可以编写:

class Request(CamelModel):
    payload: CamelModel # any CamelModel is accepted, including ECR and S3 

【讨论】:

    【解决方案2】:

    您可以使用相同的 CamelModel。

    class Request(CamelModel):
        payload: Union[CamelModel]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-15
      • 1970-01-01
      • 2012-06-19
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多