VSCODE 无法识别 db.Model 的子类化
VSCODE doesn't recognize subclassing of db.Model
我有一个带有 Flask-SQLAlchemy 和自定义模型的 Flask 项目 class。
对于类型提示,我修改了 SQLAlchemy class 如下:
class CustomSQLAlchemy(flask_sqlalchemy.SQLAlchemy):
Model: CustomModel
之后,VSCODE 将 db.Model 显示为 CustomModel:
但是,在添加属性时,例如使用 super 时,我没有从 db.Model 获得任何关于属性的建议。我认为这与 db.Model 不像 ToolTimeMixIn 那样被暗示为 class 这一事实有关。我知道我可以使用 db.Model 而不是 super(),但我个人觉得它不方便。
我正在使用 Pylance 和 Visual Studio 带有 Python 3.9 venv 的 IntelliCode。
我知道这不太可能,但有人有这方面的经验吗?
经过一些研究,我找到了解决方案:
from typing import Type
class CustomSQLAlchemy(flask_sqlalchemy.SQLAlchemy):
Model: Type[CustomModel]
Query: Type[CustomQueryObject]
db = CustomSQLAlchemy(query_class=CustomQueryObject, model_class=CustomModel, session_options={"expire_on_commit": False})
有了这个 VSCODE 就会将 db.Model 识别为 class 并给出适当的建议。
我有一个带有 Flask-SQLAlchemy 和自定义模型的 Flask 项目 class。
对于类型提示,我修改了 SQLAlchemy class 如下:
class CustomSQLAlchemy(flask_sqlalchemy.SQLAlchemy):
Model: CustomModel
之后,VSCODE 将 db.Model 显示为 CustomModel:
但是,在添加属性时,例如使用 super 时,我没有从 db.Model 获得任何关于属性的建议。我认为这与 db.Model 不像 ToolTimeMixIn 那样被暗示为 class 这一事实有关。我知道我可以使用 db.Model 而不是 super(),但我个人觉得它不方便。
我正在使用 Pylance 和 Visual Studio 带有 Python 3.9 venv 的 IntelliCode。 我知道这不太可能,但有人有这方面的经验吗?
经过一些研究,我找到了解决方案:
from typing import Type
class CustomSQLAlchemy(flask_sqlalchemy.SQLAlchemy):
Model: Type[CustomModel]
Query: Type[CustomQueryObject]
db = CustomSQLAlchemy(query_class=CustomQueryObject, model_class=CustomModel, session_options={"expire_on_commit": False})
有了这个 VSCODE 就会将 db.Model 识别为 class 并给出适当的建议。