flask 多对多关系 主从表之间查询

model层

class Studentnew(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(20),unique=True)

    #添加多对多的反向引用,必须使用secondary指定中间关联表
    courses = db.relationship('Course', secondary='xuankebiao',
                              backref=db.backref('students', lazy='dynamic'), lazy='dynamic')

class Course(db.Model):
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(20),unique=True)

# 学生选课表(中间关联表),不需要用户维护
xuankebiao = db.Table('xuankebiao',
    db.Column('student_id', db.Integer, db.ForeignKey('studentnew.id')),
    db.Column('course_id', db.Integer, db.ForeignKey('course.id')),
)

 

views函数:

#多对多关系查询
@blue.route('/manytomany/<id>/')
def manytumany(id):
    #根据学生找课程
    # student =Studentnew.query.get(id)
    # courses = student.courses.all()
    # return ','.join(c.name for c in courses)

    #根据课程找学生
    course = Course.query.get(id)
    stus = course.students.all()
    return ','.join((i.name for i in stus))

#多对多添加删除
@blue.route('/many_many/')
def many_many():
    student = Studentnew.query.get(1)
    course = Course.query.get(5)
    #学生选课
    # student.courses.append(course)
    # return student.name + '选了' + course.name

    #取消选课
    student.courses.remove(course)
    return student.name + '取消' + course.name
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值