增删改查
from typing import List, Any, Unionfrom fastapi import APIRouter, Dependsfrom core import depsfrom models import Moviefrom scheams import Movie_Pydantic, MovieIn_Pydantic, Response200, Response400movie = APIRouter(tags=["电影相关"])@movie.get("/movie", summary="电影列表", response_model=Union[Response200, Response400])async def movie_list(limit: int = 10, page: int = 1): skip = (page - 1) * limit data = { "total": await Movie.all().count(), "movies": await Movie_Pydantic.from_queryset(Movie.all().offset(skip).limit(limit).order_by('-id')) } return Response200(data=data)@movie.post("/movie", summary="新增电影")async def movie_create(movie_form: MovieIn_Pydantic, token: Any = Depends(deps.get_current_user)): return Response200(data=await Movie_Pydantic.from_tortoise_orm(await Movie.create(**movie_form.dict())))@movie.put("/movie/{pk}", summary="编辑电影")async def movie_update(pk: int, movie_form: MovieIn_Pydantic, token: Any = Depends(deps.get_current_user)): if await Movie.filter(pk=pk).update(**movie_form.dict()): return Response200() return Response400(msg="更新失败")@movie.delete("/movie/{pk}", summary="删除电影")async def movie_delete(pk: int, token: Any = Depends(deps.get_current_user)): if await Movie.filter(pk=pk).delete(): return Response200() return Response400(msg="删除失败")
from tortoise import modelsfrom tortoise import fieldsclass Movie(models.Model): name = fields.CharField(max_length=50, null=False, description="电影名称") year = fields.CharField(max_length=50, null=False, description="电影年份")
from tortoise.contrib.pydantic import pydantic_model_creatorfrom models import MovieMovie_Pydantic = pydantic_model_creator(Movie, name="Movie")MovieIn_Pydantic = pydantic_model_creator(Movie, name="MovieIn", exclude_readonly=True)