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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:45:28