当前位置: 首页 > news >正文

FastAPI系列(21):ORM之多对多添加记录

 

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695

main.py

import uvicorn
from fastapi import FastAPI
from tortoise.contrib.fastapi import register_tortoisefrom test_orm.api.student import student_api
from test_orm.settings import TORTOISE_ORMapp = FastAPI()app.include_router(student_api, prefix="/student", tags=["学生接口"])# register_tortoise是注册函数,fastapi一旦运行,register_tortoise已经执行,通过传递进去的app对象,监听服务启动和终止事件
register_tortoise(app=app,config=TORTOISE_ORM,
)if __name__ == '__main__':uvicorn.run('main:app', host='127.0.0.1', port=8001, reload=True, workers=1)

 

api下student.py 

from typing import Listfrom fastapi import APIRouter
from pydantic import BaseModel, field_validatorfrom test_orm.models import Student, Coursestudent_api = APIRouter()class StudentIn(BaseModel):name: strpwd: strsno: intclas_id: intcourses: List[int] = []@field_validator("name")def name_must_alpha(cls, value):  # 使用 cls 而不是 selfassert value.isalpha(), 'name must be alpha'return value@field_validator("sno")@classmethod  # 必须在下面def sno_validate(cls, value):assert 1000 <= value < 10000, '学号要在[1000-10000)的范围内'return value@student_api.post("/")
async def addStudent(student_in: StudentIn):# 方式1# student = Student(name=student_in.name, pwd=student_in.pwd, sno=student_in.sno, clas_id=student_in.clas_id)# await student.save()  # 插入到数据库student表;必须要加await# 方式2student = await Student.create(name=student_in.name, pwd=student_in.pwd, sno=student_in.sno,clas_id=student_in.clas_id)# print(student, type(student))# 多对多的关系绑定choose_courses = await Course.filter(id__in=student_in.courses)print(choose_courses, type(choose_courses))await student.courses.add(*choose_courses)return student

  

 

请求数据

image

 

响应结果

image

 

image

 

image

 

image

 

http://www.jsqmd.com/news/351435/

相关文章:

  • java+vue基于springboot的新鲜蔬菜销售商城平台
  • 2026年2月最新GEO公司实力榜单:深度评测TOP7权威选型指南揭晓 - 资讯焦点
  • java+vue基于springboot的医院预约挂号管理系统的设计与实现
  • 哈里斯鹰/鲸鱼算法/粒子群算法/蝴蝶算法优化核极限学习机预测附Matlab代码
  • 2026年苏州AI推广公司/GEO优化公司TOP5(中小企业专属):综合适配全域中小企业需求 - 资讯焦点
  • 探索大数据领域数据产品的创新之路
  • 基于时间卷积网络-极限学习机(TCN-ELM)的负荷预测附Matlab代码
  • 探秘大数据领域数据架构的前沿技术
  • 从聊天框到动态助手:MCP Apps 如何重塑 AI 交互的未来
  • AI写论文哪个软件最好?实测封神|宏智树AI毕业论文功能,新手也能稳过答辩
  • 【课程设计/毕业设计】基于Python与Django的校园在线考试系统设计与实现基于Python+django的在线考试系统设计和实现【附源码、数据库、万字文档】
  • 大数据领域分布式计算的分布式区块链应用
  • AI客服从入门到精通:揭秘会“思考”的AI如何完胜人工,3分钟搭建教程,收藏这一篇就够了!
  • BiliPai 5.0.5 | B站开源第三方应用,纯净无广流畅
  • 私域AI客服从入门到精通:从0-1构建智能体后台,收藏这一篇就够了!
  • Python计算机毕设之基于Django的在线考试与评估系统设计与实现基于Python+Django的在线考试与成绩评估系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 基于 Netty 的物联网自定义通信协议实战:从协议设计到百万设备稳定在线
  • 9款AI写论文哪个好?实测后发现:宏智树AI凭真实文献+可用图表封神
  • 【计算机毕业设计案例】基于Django的在线考试与评估系统试题库管理、自动组卷、在线考试、成绩统计与公告发布设计与实现(程序+文档+讲解+定制)
  • 写论文软件哪个好?宏智树 AI 实测科普:全流程学术赋能,毕业写作不踩坑
  • Dify智能体从入门到精通:全流程搭建客服+RAG揭秘,收藏这一篇就够了!
  • AI大模型薪资大概能达到多少?
  • 【魔法森林冒险】1/14 项目总览:用Java打造你的第一个回合制冒险游戏
  • 工业级的OCR有哪些选择?AI大模型项目实战之从0到1掌握Dify:聊天助手、工作流与MCA记成实战、精通qwen3+MCP协议与开发!
  • 【魔法森林冒险】2/14 抽象层设计:Figure/Person类(所有角色的基石)
  • 改进灰狼算法优化Elman神经网络的变压器故障诊断附Matlab代码
  • 豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
  • Vue.JS中如何监听生命周期事件,教程来了
  • 宏智树 AI 科普:毕业论文撰写通关攻略,从选题到定稿一站式搞定
  • 【收藏必学】Java大模型后端开发实战:RAG应用架构与实现详解