2017-08-05 14 views
0

たとえば、私には2つのモデルがあります:1つは学生と1人の教師です。
コンストラクタでStudentに追加する必要がありますかself.teacher_id = teacher_id?一人の学生は、多くの教師があり、1人の教師が多くの学生、その多対多の関係を持って、あなたはそれを行うには関連テーブルを追加する必要がSQLAlchemy(Python、Flask)dbモデルのコンストラクタで外部キーを設定するにはどうすればよいですか?

class Student(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.Text) 
    age = db.Column(db.Integer) 
    teacher_id = db.Column(db.Integer, db.ForeignKey('teacher.id')) 
    def __init__(self, name, age): 
     self.name = name 
     self.age = age 

class Teacher(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    subject = db.Column(db.Text) 
    students = db.relationship('Student', backref='person', lazy='dynamic') 
    def __init__(self, subject): 
     self.subject = subject 

答えて

0

ので:

class Student(db.Model): 
    __tablename__ = 'student' 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.Text) 
    age = db.Column(db.Integer) 
    teachers = db.relationship('Teacher', secondary='xtable', backref=db.backref('students', lazy='dynamic')) 

class Teacher(db.Model): 
    __tablename__ = 'teacher' 
    id = db.Column(db.Integer, primary_key=True) 
    subject = db.Column(db.Text) 

class Xtable(db.Model): 
    __tablename__ = 'xtable' 
    student_id = db.Column('student_id', db.ForeignKey('student.id')) 
    teacher_id = db.Column('teacher_id', db.ForeignKey('teacher.id')) 

そして今、あなたをhttp://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html#many-to-many

*後方参照のパラを使用している場合があります:Student.teachersTeacher.students

文書を照会することができるはずですrelationres.back_populatesではなく、バックリファレンスは自動的にリバースリレーションシップと同じセカンダリ引数を使用します。 したがって、両方のクラスに関係ステートメントを配置する必要はありません

関連する問題