如何创建模型,使其为空字符串或pydantic中的Dict



我想为以下情况创建pydantic模型任何一个结果都将是

{
"dataStores": ""
}

或者是

{
"dataStores": {
"dataStore": [
{
"name": "sf",
"href": "http://localhost:8080/geoserver/rest/workspaces/sf/datastores/sf.json"
}
]
}
}

我的型号现在是这样的

class DataStoreInBulk(BaseModel):
name: str = ...
href: str = ...
class DataStoreDict(BaseModel):
dataStore: List[DataStoreInBulk] 
class DataStoresModel(BaseModel):
dataStores: DataStoreDict = ''

我想我需要在DataStoresModel中进行更改,它应该在DataStoreDict之后有数据,或者只是'',不接受其他字符串。我试过

class DataStoresModel(BaseModel):
dataStores: Union[DataStoreDict, str] = ''

但问题是,任何字符串都将成为有效值

Literal适用于这种情况

from typing import Union,Literal

class CoveragesStoresModel(BaseModel):
coverageStores: Union[CoveragesStoresDict,Literal['']] = ''