Pydantic定义多个变量到一个字段



我如何写我的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与您希望包含的两个类一起使用:

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

注意,这意味着成员变量payload必须是EcrPayloadS3Payload的一个实例,而不是其他

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

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

您可以使用相同的CamelModel

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