[英]Is it possible to have arbitrary key names in pydantic?
我正在嘗試使用pydantic
接口類似的行為,但遇到了一些問題。
在 TS 中考慮以下內容:
export interface SNSMessageAttributes {
[name: string]: SNSMessageAttribute;
}
是否有可能在 pydantic 中實現這一點?
這是我的 python 示例代碼:
from pydantic import BaseModel, parse_obj_as
from typing import Optional
class Values(BaseModel):
Value: str
Type: str
class MessageAttributes(BaseModel):
ArbitraryKey: Optional[Values]
class Mymodel(BaseModel):
MessageAttributes: Optional[MessageAttributes]
data = {"MessageAttributes": {"ArbitraryKey": {"Type": "String", "Value": "TestString"}}}
parsed = parse_obj_as(Mymodel, data)
print(parsed.MessageAttributes.ArbitraryKey.Value)
# TestString
在此示例中,屬性ArbitraryKey
可以是任何值。 但我不可能對所有可能的鍵名進行硬編碼。 例如,如果鍵名是SomeTestKey
而不是ArbitraryKey
怎么辦?
我知道我可以在Config
中使用extra = 'allow
,但這不會給出我在使用parse_obj_as
時可以獲得的點語法
我的問題是,如果可能的話,我可以在 pydantic 中為屬性名稱做類似於[name: string]
的事情嗎?
經過討論是Github ,這正是我所希望的。
from pydantic import BaseModel, parse_obj_as
from typing import Dict, Optional
from pydantic import parse
class Values(BaseModel):
Value: str
Type: str
class Mymodel(BaseModel):
MessageAttributes: Optional[Dict[str, Values]]
data = {"MessageAttributes": {"ArbitraryKey": {"Type": "String", "Value": "TestString"}}}
parsed = Mymodel.parse_obj(data)
print(parsed)
print(parsed.MessageAttributes['ArbitraryKey'].Type)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.