04. 开发专业信息增删改查功能(二)

126 字约 1 分钟读完238 次阅读更新于 2026/5/3
# 删除
@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 的