我正在开发一个 FastAPI/SQLModel 项目,由于我们已经弃用了 Python 3.9,所以我将每个
Optional[X]
替换为 X | None
。
我在输入注释字符串方面遇到问题。
例如,参加这门课
from typing import Optional
class OAuthAccount(SQLModel, table=True):
__tablename__ = "oauthaccount"
id: int | None = Field(default=None, primary_key=True)
user: Optional["User"] = Relationship(back_populates="oauth_accounts")
如果我用
"User" | None
替换最后一个类型提示,我会收到此错误
E TypeError: unsupported operand type(s) for |: 'str' and 'NoneType'
有什么办法可以解决这个问题,还是我坚持
Optional
?
谢谢
假设
User
在其他地方定义,只需写 User | None
不带引号:
user: User | None = Relationship(back_populates="oauth_accounts")