FastApi用户身份验证,无法添加其他字段进行注册

问题描述

我在项目上使用Fastapi,Fastapi用户和TortoiSEOrm进行身份验证。

FastApi Users

Tortoise

我遵循了FastApi用户网站上的示例,当我尝试在注册用户添加一些额外字段时,出现此错误

RuntimeError:未找到的验证器,请参见Config中的random_types_allowed

这是我的代码,谢谢您的帮助!

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)

解决方法

您可以添加自定义属性

from typing import Optional
from pydantic import Field

class User(models.BaseUser):
  nombre : Optional[str] = Field(max_lenght="100")
  apellidos :Optional[str] = Field(max_lenght="100")

Also to have these fields(nombre and apellidos) appear in you path function as properties and have them included in 
will need to make changes to the fastapi_users library.
If you are using a virtual environment like I am,there's a **Lib** folder that holds all the libraries you've installed and more.
Look for the **fastapi_users folder** and go into the **models.py** file and update with your new properties and do same in the db file(update the db that you are using for your project.

Happy computing!!

,

我在使用 FastAPI 用户和 SQlAlchemy 时遇到了类似的错误。对我有用的是在定义它时将自定义字段(在您的情况下为 nombre 和 appelidos)添加到 4 个用户模型中的每一个和 UserModel 表中

schema.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)