modelo
# 学生和课程多对多
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'))
)
Tercera tabla instrucción SQL:
create table student_course(
student_id int not null,
course_id int not null,
primary key(student_id, course_id)
)
Tanto consulta sencilla y Modificar
1, comprobar cursos seleccionados de los estudiantes Joe Smith '
course_list = Student.query.filter_by(name='张三').first().relate_course.all()
2, opción de verificación de la empatía "lenguaje" de los estudiantes
student_list = Course.query.filter_by(name='语文').first().relate_course.all()
3, la opinión: posicionamiento obj -> Revisión
# 把 张三 选的语文课改成 物理
course_list = Student.query.filter_by(name='张三').first().relate_course.all()
obj = course_list.filter_by(name='语文').first()
obj.name = '物理'
db.session.commit()
adición
# 张三 新选了 体育课
cus = Course(name="体育课")
stu = Student.query.filter_by(name='张三').first()
stu.relate_course.append(cus)
db.session.commit()
Eliminar
# 张三 删除了 语文课
cus = Course.query.filter_by(name='语文').first()
stu = Student.query.filter_by(name='张三').first()
stu.relate_course.remove(cus)
db.session.commit()