2016-06-01 52 views
0

でレコードを挿入します。フラスコSQLAlchemyの私は3つのテーブル持っている複数の外部キー

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String) 
    successes = db.relationship('Success', backref='user', lazy='dynamic') 

class Success(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    package = db.Column(db.String) 
    user_id = db.Column(db.Integer, db.ForeignKey('user.id')) 
    trial_id = db.Column(db.Integer, db.ForeignKey('trials.id')) 

class Trials(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    description = db.Column(db.String) 
    successes = db.relationship('Success', backref='attempt', lazy='dynamic') 

を私は成功し、ユーザーテーブルのデータを挿入することができます使用して:

user.successes.extend(success_objects_list) 
db.session.add(user) 
db.session.add_all(success_objects_list) 
db.session.commit() 

をこれがforeign-の世話をしますキーuser_id

どのように私は同時に裁判表内のデータのデータを挿入し、第二外国キーtrial_idの世話をしますか?

+0

なぜ同じことをすることができませんか? – univerio

+0

@univerioはレコードを2回挿入しませんか?一度私は既にuser.successesを拡張することによってやった。 – user3787291

+0

試しましたか? 'user.successes'を拡張することによって' Success'インスタンスをセッションに追加し、それらを 'User'インスタンスに関連づけます。 'trial.successes'を拡張することによって、' Success'インスタンスをセッションに追加し、それらを 'Trials'インスタンスに関連付けることができます。しかし、セッションにすでに存在しているので、二度追加されることはありません。 – univerio

答えて

1

trial.successesとまったく同じことができますし、うまくいくはずです。 user.successesを拡張すると、Successインスタンスがセッションに追加され、Userインスタンスに関連付けられます。 trial.successesを拡張すると、Successインスタンスがセッションに追加され、Trialsインスタンスに関連付けられますが、セッションにすでに存在するため、2回追加されることはありません。

関連する問題