flask中多对多关系 主从表的增删改查

模型

# 学生和课程多对多
class Student(db.Model):
    __tablename__ = "students"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)

    relate_courses = db.relationship('Course', secondary=student_course,
                              backref='relate_student',
                              lazy='dynamic')


class Course(db.Model):
    __tablename__ = "courses"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
   

student_course = db.Table('student_course',
                             db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
                             db.Column('course_id', db.Integer, db.ForeignKey('courses.id'))
                             )

第三张表的sql语句:

create table student_course(
	student_id int not null,
	course_id int not null,
	primary key(student_id, course_id)
)

查询和修改都简单

1、查学生 “张三” 所选的课程

course_list = Student.query.filter_by(name='张三').first().relate_course.all()

2、同理 查选 “语文” 的学生

student_list = Course.query.filter_by(name='语文').first().relate_course.all()

3、修改:定位obj——>修改

#  把 张三 选的语文课改成 物理
course_list = Student.query.filter_by(name='张三').first().relate_course.all()
obj = course_list.filter_by(name='语文').first()
obj.name = '物理'
db.session.commit()

增加

# 张三 新选了 体育课
cus = Course(name="体育课")
stu = Student.query.filter_by(name='张三').first()
stu.relate_course.append(cus)
db.session.commit()

删除

# 张三  删除了 语文课
cus = Course.query.filter_by(name='语文').first()
stu = Student.query.filter_by(name='张三').first()
stu.relate_course.remove(cus)
db.session.commit()

参考博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值