04. 开发专业信息增删改查功能(二)
# 删除
@router.delete('/delete/{major_id}')
async def delete(major_id: int):
await Major.filter(id=major_id).delete()
return Result.success()
# 单个查询
@router.get('/selectById/{major_id}')
async def select_by_id(major_id: int):
major = await Major.get_or_none(id=major_id)
return Result.success(major)
# 查询所有数据
@router.get('/selectAll')
async def select_all(name: str = ""):
major_list = await Major.filter(name__contains=name) # name__contains表示根据name进行模糊查询
return Result.success(major_list)
# 分页查询数据
@router.get('/selectPage')
async def select_all(name: str = "", pageNum: int = 1, pageSize: int = 10):
query = Major.filter(name__contains=name) # name__contains表示根据name进行模糊查询
major_list = await query.offset((pageNum - 1) * pageSize).limit(pageSize)
total = await query.count()
# major_list 转成字典数据
major_dict_list = [
MajorPydantic.model_validate(major).model_dump()
for major in major_list
]
page_info = PageInfo(list=major_dict_list, total=total)
return Result.success(page_info)
注意:PageInfo 的这个对象,一定要塞进去一个 字典的 list,而不是数据库直接查出来的 list,因为 pageInfo 会被 Resuolt.success() 方法再次序列化,如果其内部的对象或者属性不是字典值或者普通类型的值,是无法序列化成最终的 json 的