2016-06-01 13 views
0

Ich habe 3 Tabellen:Flask-SQLAlchemy Einsatz Aufzeichnungen mit mehreren Fremdschlüssel

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') 

ich die Daten in Erfolg einsetzen können und Benutzertabelle:

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

Diese kümmert sich um die außen- Schlüssel user_id.

Wie füge ich Daten gleichzeitig Daten in Test Tabelle und kümmern sich um den zweiten Fremd-Key trial_id ??

+0

Warum können Sie nicht genau dasselbe tun? – univerio

+0

@univerio würde das nicht Datensätze 2 mal einfügen? So wie ich es schon getan habe, indem ich die user.successes erweitert habe. – user3787291

+0

Haben Sie es versucht? Indem Sie 'user.successes 'erweitern, fügen Sie der Sitzung die' Success'-Instanzen hinzu und ordnen sie der' User'-Instanz zu. Durch Erweitern von 'trial.successes' fügen Sie der Sitzung die 'Success'-Instanzen hinzu und verknüpfen sie mit der' Trials'-Instanz, aber weil sie bereits in der Sitzung sind, werden sie nicht zweimal hinzugefügt. – univerio

Antwort

1

Sie können genau dasselbe mit trial.successes tun und es sollte einfach funktionieren. Durch Erweitern von user.successes fügen Sie die Success Instanzen der Sitzung hinzu und verknüpfen sie mit der User Instanz. Durch Erweitern von trial.successes fügen Sie die Success Instanzen der Sitzung hinzu und verknüpfen sie mit der Trials Instanz, aber da sie bereits in der Sitzung sind, werden sie nicht zweimal hinzugefügt.