我有两个pydantic模型。每个人都在自己的模块(文件)中。一种型号,即TUser取决于TAddress
地址_model.py
class TAddress(BaseModel):
id: Optional[int]
address: Optional[constr(max_length=100, strip_whitespace=True)]
city: Optional[constr(max_length=80, strip_whitespace=True)]
postal_code: Optional[constr(max_length=15, strip_whitespace=True)]
country: Optional[constr(max_length=3)]
user_model.py
class TUser(BaseModel):
id: UUID = None
email: Optional[EmailStr]
address: Optional[TAddress]
is_active: Optional[bool]
is_email_verified: Optional[bool]
created_at: Optional[datetime.datetime]
如果我将TUser模型用于PydanticObjectType
class UserType(PydanticObjectType):
class Meta:
model = TUser
我收到以下错误消息:
graphene_pydantic.converters.ConversionError: Don't know how to convert the Pydantic field ModelField(name='address', type=Optional[TAddress], required=False, default=None) (<class 'app.address.serializers.TAddress'>)
在使用不同模块的pydantic模型时,似乎存在一个相互依赖的问题。 这个用例的解决方案是什么
有什么想法吗
错误消息为您提供了所需的提示
发生的事情是Graphene不知道如何转换address类,以便能够将其与
TUser
一起使用,因为它是PydanticObject
的一部分为了消除错误,需要定义一个
PydanticObjectType
引用TAddress
,这样石墨烯就会知道这两个对象之间的关系在具有
UserType
的模式文件中,只需执行以下操作:相关问题 更多 >
编程相关推荐