Pydantic 为一个字段定义多个变量
Pydantic defining multiple variables to one field
如何写我的 Request
class 来表示负载可以是 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]
您可以使用相同的 CamelModel。
class Request(CamelModel):
payload: Union[CamelModel]
只需将 Union
与您希望包含的 类 一起使用:
class Request(CamelModel):
payload: Union[EcrPayload, S3Payload] # accepts ECR and S3 payloads, but nothing else
请注意,这意味着成员变量 payload
必须是 EcrPayload
或 S3Payload
的实例, 但不能是其他 .
如果您希望包含任何类型的 CamelModel
(可能包括新模型 EcsPayload
、LambdaPayload
或您将来可能定义的其他模型),您可以这样写:
class Request(CamelModel):
payload: CamelModel # any CamelModel is accepted, including ECR and S3
如何写我的 Request
class 来表示负载可以是 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]
您可以使用相同的 CamelModel。
class Request(CamelModel):
payload: Union[CamelModel]
只需将 Union
与您希望包含的 类 一起使用:
class Request(CamelModel):
payload: Union[EcrPayload, S3Payload] # accepts ECR and S3 payloads, but nothing else
请注意,这意味着成员变量 payload
必须是 EcrPayload
或 S3Payload
的实例, 但不能是其他 .
如果您希望包含任何类型的 CamelModel
(可能包括新模型 EcsPayload
、LambdaPayload
或您将来可能定义的其他模型),您可以这样写:
class Request(CamelModel):
payload: CamelModel # any CamelModel is accepted, including ECR and S3