FastAPI Users库添加自定义字段报错TypeError的问题咨询
问题根源
报错TypeError: 'first_name' is an invalid keyword argument for User的核心原因是:你仅在Pydantic的UserCreate schema中添加了first_name字段,但对应的SQLAlchemy User数据库模型并未同步添加该字段,导致ORM创建用户实例时无法识别这个参数。
解决方案
需要同时修改SQLAlchemy数据库模型和Pydantic Schema,确保两端字段一致:
1. 更新SQLAlchemy User模型
找到你的User模型定义文件,添加first_name字段:
import uuid from sqlalchemy import Column, String from sqlalchemy.ext.declarative import declarative_base from fastapi_users_db_sqlalchemy import SQLAlchemyBaseUserTableUUID Base = declarative_base() class User(SQLAlchemyBaseUserTableUUID, Base): # 添加自定义字段,根据需求设置nullable属性 first_name = Column(String, nullable=False)
2. 同步Pydantic Schemas
更新你的Schema定义,让UserRead和UserUpdate也包含first_name字段(可选,但推荐保持一致性):
import uuid from fastapi_users import schemas from typing import Optional class UserRead(schemas.BaseUser[uuid.UUID]): first_name: str class UserCreate(schemas.BaseUserCreate): first_name: str class UserUpdate(schemas.BaseUserUpdate): first_name: Optional[str]
3. 数据库迁移(若使用Alembic)
如果用了Alembic管理数据库版本,需要生成并执行迁移脚本,将新增字段同步到数据库:
# 生成迁移脚本 alembic revision --autogenerate -m "Add first_name field to User table" # 执行迁移 alembic upgrade head
原理说明
FastAPI Users的工作流程是:Pydantic Schema接收前端请求数据 → UserManager将数据转换为字典 → SQLAlchemy数据库适配器用该字典创建User模型实例。只有当ORM模型和Pydantic Schema的字段完全匹配时,才能成功创建用户。
内容的提问来源于stack exchange,提问作者MD SHAYON
相关产品推荐
相关产品推荐

