You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI+Tortoise ORM用pydantic_model_creator遇KeyError:'__module__'求助

解决Tortoise ORM中pydantic_model_creator触发KeyError:'module'的问题

以下是针对该错误的具体排查和解决思路:

1. 延迟Pydantic模型生成时机,确保Tortoise初始化完成

如果在Tortoise.init()或register_tortoise完成前就调用pydantic_model_creator,Tortoise还未完成模型元数据的加载,会导致找不到__module__属性。

  • 把模型生成代码放在FastAPI的startup事件回调里,或者在路由模块中延迟导入:
    # main.py
    from fastapi import FastAPI
    from tortoise.contrib.fastapi import register_tortoise
    from models import User
    from tortoise.contrib.pydantic import pydantic_model_creator
    
    app = FastAPI()
    User_Pydantic = None
    
    @app.on_event("startup")
    async def init_tortoise_and_models():
        await register_tortoise(
            app,
            db_url="sqlite:///test.db",
            modules={"models": ["models"]},
            generate_schemas=True,
        )
        # 初始化完成后再生成Pydantic模型
        global User_Pydantic
        User_Pydantic = pydantic_model_creator(User)
    

2. 规范模型类定义

确保你的Tortoise模型类符合标准写法:

  • 必须正确继承tortoise.models.Model
  • 建议显式定义Meta类(至少指定表名)
  • 示例正确的模型:
    # models.py
    from tortoise.models import Model
    from tortoise import fields
    
    class User(Model):
        id = fields.IntField(pk=True)
        username = fields.CharField(max_length=50, unique=True)
    
        class Meta:
            table = "users"
    

3. 验证依赖版本兼容性

版本不兼容是常见诱因,尤其是Pydantic V2和旧版Tortoise的组合:

  • 推荐使用兼容版本组合:
    • Tortoise ORM >= 0.20.0(适配Pydantic V2)
    • Pydantic >= 2.0.0 或 <2.0(根据Tortoise版本选择)
    • FastAPI >= 0.95.0
  • 执行pip list确认当前版本,若不匹配则重新安装:
    pip install tortoise-orm==0.20.1 pydantic==2.5.2 fastapi==0.104.1
    

4. 检查模块配置与导入路径

确保模型模块被正确加载:

  • 在register_tortoise的modules参数中,准确指定模型所在的模块名(比如模型在app/models.py,则写modules={"models": ["app.models"]})
  • 避免使用相对导入,改用绝对导入方式引入模型类
  • 确保项目目录符合Python包规范,根目录建议保留__init__.py

5. 从报错堆栈定位具体问题

如果以上步骤无效,仔细查看报错的Traceback信息:

  • 找到触发KeyError的具体代码行,确认是哪个模型类出了问题
  • 检查该模型是否被正确导入,是否在Tortoise初始化的modules列表中被包含

内容的提问来源于stack exchange,提问作者mrale81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 21:40:07