I have 3 tables:
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')
I can insert the data in Success and user table using :
user.successes.extend(success_objects_list)
db.session.add(user)
db.session.add_all(success_objects_list)
db.session.commit()
This takes care of the foreign-key user_id.
How do I simultaneously insert data data in Trial Table and take care of the second foreign-Key trial_id ??
user.successesyou add theSuccessinstances to the session and associate them with theUserinstance. By extendingtrial.successes, you add theSuccessinstances to the session and associate them with theTrialsinstance, but because they are already in the session, they don't get added twice.