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