首页 > 解决方案 > Fastapi sqlalchemy pydantic 关系字段

问题描述

我只是 FastAPI/Pydantic & SqlAlchemy 的初学者 - 我有两个模型 Post 和 Category 我希望 Post 应该获取 Category 名称而不是只有 id

当我尝试使用下面的代码时,它会在控制台中出现以下错误

非常感谢您对解决此问题的任何帮助,谢谢!

response -> 1 -> category_name
  field required (type=value_error.missing)

post.py 模型

class Post(Base):
    __tablename__="post"
    id = Column(Integer, primary_key=True, index=True)
    title=Column(String(50))
    user_id=Column(Integer, ForeignKey("users.id"))
    category_id = Column(Integer, ForeignKey("category.id"))
    category_name=relationship("Category", backref="post")


class Category(Base):
    __tablename__="category"
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String)
     

Pydantic 模型

class CategoryGet(BaseModel):
    id:int
    name:str

    class Config:
        orm_mode=True



class Post(BaseModel):
     
    id = int
    title=str
    user_id=int
    category_id = int
    category_name=CategoryGet 

    class Config:
        orm_mode=True

我的 mainapp.py

router = APIRouter()


@router.get("/", response_model=List[schemas.VehicleGet])
def get_vehicle(db: Session = Depends(get_db), skip: int = 0, limit: int = 50) -> Any:
    vehicle = crud.post.get_multi(db, skip=skip, limit=limit)
    return vehicle

标签: sqlalchemyfastapipydantic

解决方案


Pydantic 模型属性使用:而不是=

 class Post(BaseModel):
     
    id: int
    title: str
    user_id: int
    category_id: int
    category_name: CategoryGet 

    class Config:
        orm_mode = True

推荐阅读