Как преобразовать словарь в схему в FastAPI

Приведенную ниже схему можно преобразовать в dict с помощью branch.__dict__

branch = BranchIn(name='jfslkjf', regionId='fdfasd')
branchDict = branch.__dict__
branchDict = {'name': 'jfslkjf', 'regionId': 'fdfasd' }

Как я могу снова преобразовать объект dict в схему в FastAPI


person Sathwik Boddu    schedule 29.07.2020    source источник
comment
Что вы имеете в виду, говоря о преобразовании dict в схему.   -  person Yagiz Degirmenci    schedule 29.07.2020
comment
Действия в обратном порядке ...   -  person Sathwik Boddu    schedule 30.07.2020


Ответы (2)


Вы можете использовать двойную звездочку ** для распаковки нескольких переменных и превращения их в один объект.

class Branch(BaseModel):
    name: str
    regionID: str


def check_type(obj):
    return f"{obj}  \n  type: {type(obj)}"

Я создал этот класс и средство проверки типов, а затем создал объект ветки

branch = Branch(name='jfslkjf', regionID='fdfasd')
check_type(branch)

Out: name='jfslkjf' regionID='fdfasd'  
     type: <class '__main__.Branch'>

Затем я преобразовал в диктатор

branch_dict = branch.__dict__
check_type(branch_dict)


Out: {'name': 'jfslkjf', 'regionID': 'fdfasd'}  
     type: <class 'dict'>

Итак, я использовал двойную звездочку, чтобы распаковать его.

test_branch = Branch(**branch_dict)
check_type(test_branch)

Out: name='jfslkjf' regionID='fdfasd'  
     type: <class '__main__.Branch'>
person Yagiz Degirmenci    schedule 30.07.2020

Вы можете просто перекинуть диктовку обратно в Branch.

branchDict = {'name': 'jfslkjf', 'regionId': 'fdfasd' }
branchObj = Branch(**branchDict)

Fastapi использует pydantic.

person securisec    schedule 03.08.2020