2016-12-27 4 views
0

Nach this Tutorial, für die man zu viele Beziehungen, ich habe diesen einfachen Code:one to many Beziehung sqlalchemy ids

class Parent(Base): 
    __tablename__ = 'parent' 
    id = Column(Integer, primary_key=True) 
    children = relationship("Child", back_populates="parent") 

class Child(Base): 
    __tablename__ = 'child' 
    id = Column(Integer, primary_key=True) 
    parent_id = Column(Integer, ForeignKey('parent.id')) 
    parent = relationship("Parent", back_populates="children") 

Jetzt ist das Problem parent_id wird bevölkern, wenn ich die Kinder als eine Liste gesetzt, und die Ergebnisse in eine Datenbank-Commit wie folgt:

# assume I have a session 
children = Child(), Child(), Child() 
p = Parent(children=children) 
session.add(p) 
session.commit() 

Wenn ich die Datenbank an dieser Stelle zu überprüfen, wird parent_id nicht aufgefüllt. Ich denke, das macht Sinn, weil ich parent_id nirgendwo explizit definiert habe, aber gibt es eine Möglichkeit, die Kinder dazu zu bringen, die ID der Eltern zu bekommen?

Antwort

0

Eltern nehmen Kinder als Liste so:

children = [Child(), Child(), Child()] 
... 
p = Parent.query.first() 
for child in p.children: 
    print(child.parent_id)