【问题标题】:VSCODE doesn't recognize subclassing of db.ModelVSCODE 不识别 db.Model 的子类化
【发布时间】:2021-11-05 23:42:28
【问题描述】:

我有一个带有 Flask-SQLAlchemy 和自定义模型类的 Flask 项目。

对于类型提示,我修改了 SQLAlchemy 类,如下所示:

class CustomSQLAlchemy(flask_sqlalchemy.SQLAlchemy):
    Model: CustomModel

之后,VSCODE 确实将 db.Model 显示为 CustomModel:

但是,在添加属性时,例如使用 super 时,我没有从 db.Model 获得任何有关属性的建议。我认为这与 db.Model 没有被暗示为像 ToolTimeMixIn 这样的类有关。我知道我可以使用 db.Model 代替 super(),但我个人觉得不方便。

我将 Pylance 和 Visual Studio IntelliCode 与 Python 3.9 venv 一起使用。 我知道这不太可能,但有人有这方面的经验吗?

【问题讨论】:

    标签: python visual-studio-code flask-sqlalchemy pylance intellicode


    【解决方案1】:

    经过一番研究,我找到了解决方案:

    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 识别为一个类并给出适当的建议。

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 2021-09-21
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多