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

FastAdmin未记录类模型注册,继承fastapi-users的User模型登录后台报错‘User model is not registered’

FastAdmin未记录类模型注册,继承fastapi-users的User模型登录后台报错‘User model is not registered’

嘿,我之前也踩过这个坑!你这情况大概率是FastAdmin没正确识别到你的User模型,咱们一步步排查解决:

  • 先盯紧装饰器的导入和用法!别搞混了不同库的register装饰器,一定要用FastAdmin提供的那个,导入语句得是from fastadmin import register,要是不小心导入了fastapi-users或者其他库的register,那肯定白忙活。另外,你代码里写的@register(User, sqlalchemy_sessionmaker=db...)是错的!装饰器不用手动传类名,直接把它放在类定义的上方,参数只传数据库会话生成器就行,正确写法是这样:
    from core.models import Base
    from fastapi_users.db import SQLAlchemyBaseUserTable
    from .mixins import IntIdPkMixin, CompanyRelationMixin
    from core.types.user_id import UserIdType
    from fastadmin import register  # 确保是FastAdmin的register
    
    @register(sqlalchemy_sessionmaker=你的db会话生成器)
    class User(
        Base,
        IntIdPkMixin,
        CompanyRelationMixin,
        SQLAlchemyBaseUserTable[UserIdType],
    ):
        # 你的模型字段定义
        ...
    
  • 再检查模型模块有没有被正确导入!要是你的User模型在单独的文件里(比如models/user.py),那在初始化FastAdmin的入口文件(比如main.py)里必须导入这个模块,不然装饰器根本没机会执行,FastAdmin自然不知道有这个模型存在。就加一行from your_app.models.user import User就行,不用额外操作,导入后装饰器会自动完成注册。
  • 最后确认Base类的一致性!你的User模型同时继承了core.models的Base和fastapi-users的SQLAlchemyBaseUserTable,要确保这两个Base是同一个SQLAlchemy的Base类,不然可能会出现表结构不兼容的问题,间接导致FastAdmin识别失败。

要是这么调整完还不行,你可以看看FastAdmin的运行日志,有没有模型注册相关的提示,或者检查下数据库里User表的结构是不是符合FastAdmin的要求——不过一般前面几步就能解决这个“模型未注册”的问题了。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:23:01