Django User
A classe Usuario possui um relacionamento um para um com a classe User, esse relacionamento tem um campo chamado django_user.
Na geração do projeto FastAPI, algumas mudanças devem ser feitas para que nos endpoints de consulta, em fez de trazer o objeto do django_user, deve ser retornado a url com os dados do django_user daquele usuario.
Para isso, siga os passos abaixo:
1° Passo
No arquivo schemas.py, a classe UsuarioBase tem o campo django_user do tipo User. Deve-se trocar esse tipo para str.
Antes
django_user: Optional[User]
Depois
django_user: Optional[str]
2° Passo
No arquivo api.py, troque os métodos chamados.
Antes
def read_usuarios(db: Session = Depends(get_db), skip: int = 0, limit: int = 25) -> Any:
"""
Retrieve usuarios.
"""
usuarios = cruds.usuario.get_multi(db, skip=skip, limit=limit)
for usuario in usuarios:
usuario.django_user = crud_auth.user.get_by_id(db=db, id=usuario.django_user_id)
return usuarios
def read_usuario_by_id(usuario_id: str, db: Session = Depends(get_db)) -> Any:
"""
Get a specific usuario by id.
"""
usuario = cruds.usuario.get(db, id=usuario_id)
if not usuario:
raise HTTPException(status_code=404, detail="Item usuario inexistente no sistema")
usuario.django_user = crud_auth.user.get_by_id(db=db, id=usuario.django_user_id)
return usuario
Depois
def read_usuarios(request: Request, db: Session = Depends(get_db), skip: int = 0, limit: int = 25) -> Any:
"""
Retrieve usuarios.
"""
usuarios = cruds.usuario.get_multi_paginate_django_user(
db, request=request, offset=skip, limit=limit)
return usuarios
def read_usuario_by_id(usuario_id: str, request: Request, db: Session = Depends(get_db)) -> Any:
"""
Get a specific usuario by id.
"""
usuario = cruds.usuario.get_paginate_django_user(
db, request=request, id=usuario_id)
return usuario