Flask框架之多对多关系模型类的定义

案例代码:

table_relation = db.Table(‘stu_tea_rel‘,  # 关系表明
                          db.Column(‘stu_id‘, db.Integer, db.ForeignKey(‘student.id‘)), # 多关系表的主键
                          db.Column(‘tea_id‘, db.Integer, db.ForeignKey(‘teacher.id‘)))    # 多关系表的主键


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


class Teacher(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    students = db.relationship(‘Student‘,
                               backref=‘teacher‘,
                               lazy=‘dynamic‘)

代码分析:

1. 分别创建两个多关系模型

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


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

2. 创建多对多关系表

table_relation = db.Table(‘stu_tea_rel‘,
                          db.Column(‘stu_id‘, db.Integer, db.ForeignKey(‘student.id‘)),
                          db.Column(‘tea_id‘, db.Integer, db.ForeignKey(‘teacher.id‘)))

3. 在模型类中添加多对多关系字段

class Teacher(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    students = db.relationship(‘Student‘,
                               backref=‘teacher‘,
                               lazy=‘dynamic‘)

这个关系字段在两个多对多关系模型中任选一个定义即可。