【发布时间】:2014-05-15 15:26:31
【问题描述】:
我正在尝试设计一个模式来表示在 SQLAlchemy 中具有父母和孩子的家庭。父母可以与许多孩子相关,每个孩子恰好有两个父母,父亲和母亲。我可以通过使用多对多关系来做类似的事情。
family_table = db.Table('family', db.metadata,
db.Column('parent_id', db.Integer, db.ForeignKey('parent.id')),
db.Column('child_id', db.Integer, db.ForeignKey('child.id'))
)
class Parent(db.Model):
id = db.Column( db.Integer, primary_key = True )
children = db.relationship( 'Child', secondary = family_table, backref = 'parents' )
class Child(db.Model):
id = db.Column( db.Integer, primary_key = True )
但是,由于这允许一个孩子有两个以上的父母,因此并不令人满意。相反,我尝试手动指定从孩子到父亲和母亲的单向关系:
class Child(db.Model):
id = db.Column( db.Integer, primary_key = True )
father_id = db.Column( db.Integer, db.ForeignKey('parent.id'))
father = db.relationship( 'Parent', foreign_keys = father_id )
mother_id = db.Column( db.Integer, db.ForeignKey('parent.id'))
mother = db.relationship( 'Parent', foreign_keys = mother_id )
我的问题:如何定义从父级到子级的关系(例如,父表中的子列)?
谢谢!
【问题讨论】:
标签: sqlalchemy relational-database flask-sqlalchemy