2. 通过Context传递参数¶
在上一个例子中,如果希望search的参数可以从外部传入的话, 可以使用`context`
1import asyncio
2from pydantic import BaseModel
3from pydantic_resolve import resolve
4
5async def search_friend(name: str, gender: str):
6 await asyncio.sleep(1) # search friends of tangkikodo
7 if gender == 'male':
8 return [Friend(name="tom"), Friend(name="peter")]
9 else:
10 return [Friend(name="marry"), Friend(name="cary")]
11
12class User(BaseModel):
13 name: str
14 age: int
15
16 friends: List[Friend] = []
17 async def resolve_friends(self, context):
18 return await search_friend(self.name, context['gender'])
19
20class Friend(BaseModel):
21 name: str
22
23async def main():
24 user = User(name="tangkikodo", age=20)
25 user = await Resolver(context={'gender': 'male'}).resolve(user)
26 print(user.json())
1{
2 "name": "tangkikodo",
3 "age": 19,
4 "friends": [{"name": "tom"}, {"name": "peter"}]
5}