05. 使用AI帮助开发图书列表页面和详情展示页面

39 字约 1 分钟读完110 次阅读更新于 2026/5/3

UserBooks.vue

BookDetail.vue

根据 分类 id 查询

# 分页查询
@router.get("/selectPage")
async def select_page(name: str = "", categoryId: int = 0, pageNum: int = 1, pageSize: int = 10):
    # 同时获取分页数据和总数
    query = Books.filter(name__contains=name).prefetch_related("category")
    if categoryId > 0:
        query = query.filter(category__id=categoryId)
    # 获取分页数据
    books_list = await query.order_by("-id").offset((pageNum - 1) * pageSize).limit(pageSize)
    books_list = [
        {
            **BooksPydantic.model_validate(books).model_dump(),
            "categoryId": books.category.id if books.category else None,
            "categoryName": books.category.name if books.category else None,
        }
        for books in books_list
    ]
    # 计算总数
    total = await query.count()
    # 封装分页数据
    pageinfo = PageInfo(total=total, list=books_list)
    return Result.success(pageinfo)

单个查询

# 单个查询
@router.get("/selectById/{books_id}")
async def select_one(books_id: int):
    books = await Books.get_or_none(id=books_id).prefetch_related("category")
    book_dict = BooksPydantic.model_validate(books).model_dump()  # 转换成字典数据
    book_dict['categoryName'] = books.category.name if books.category else None
    return Result.success(book_dict)