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 并给出适当的建议。