我在我的项目中使用 Fastapi、Fastapi Users 和 TortoiseOrm 进行身份验证。
我按照 FastApi 用户网站上的示例进行操作,当我尝试在注册用户时添加一些额外字段时,出现此错误:
RuntimeError: no validator found for <class 'tortoise.fields.data.CharField'>, see arbitrary_types_allowed in Config
这是我的代码,感谢您的帮助!
from tortoise import fields
from tortoise.contrib.pydantic import pydantic_model_creator
from fastapi_users import models
from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase
from tortoise.contrib.starlette import register_tortoise
class User(models.BaseUser):
nombre = fields.CharField(max_length=100)
apellidos = fields.CharField(max_length=100)
class UserCreate(models.BaseUserCreate):
pass
class UserUpdate(User, models.BaseUserUpdate):
pass
class UserDB(User, models.BaseUserDB):
pass
class UserModel(TortoiseBaseUserModel):
pass
user_db = TortoiseUserDatabase(UserDB, UserModel)
最佳答案
我在将 FastAPI 用户与 SQlAlchemy 一起使用时遇到了类似的错误。对我有用的是在定义它时将自定义字段(在您的情况下为 nombre 和 appelidos)添加到 4 个用户模型中的每一个和 UserModel 表中
schemas.py 文件
from fastapi_users import models
class User(models.BaseUser):
sid: int
fname: str
lname: str
class UserCreate(models.BaseUserCreate):
sid: int
fname: str
lname: str
class UserUpdate(User, models.BaseUserUpdate):
sid: int
fname: str
lname: str
class UserDB(User, models.BaseUserDB):
sid: int
fname: str
lname: str
models.py 文件
from sqlalchemy import Column, Integer, String
from fastapi_users.db import SQLAlchemyBaseUserTable
from db import Base
class UserTable(Base, SQLAlchemyBaseUserTable):
sid = Column(Integer)
fname = Column(String)
lname = Column(String)
关于python - FastApi Users Auth,无法添加额外的注册字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63894605/