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}