与继承 类 的多对一关系
Many to one Relationship with inherited Classes
我正在学习 Flask,目前正在使用 Flask 构建地址簿应用程序。使用 SQLAlchemy 实现我的模型时出现以下错误:
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Company.contacts - there are multiple foreign key paths linking the tables. Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference to the parent table.
class Person(db.Model):
__tablename__ = 'person'
id = db.Column(db.Integer, primary_key=True)
address = db.relationship('Address',
secondary=address_person,
backref=db.backref('persons', lazy='dynamic'),
lazy='dynamic')
projects = db.relationship('Project',
secondary="project_person_link",
backref=db.backref('persons', lazy='dynamic'),
lazy='dynamic')
phonenumbers = db.relationship('Phone', backref='Phonenumbers', lazy='dynamic')
mails = db.relationship('Mail', backref='Mails', lazy='dynamic')
class Company(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
contacts = db.relationship('Contact', backref="company", lazy='dynamic')
class Contact(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
christmas_card = db.Column(db.Boolean)
picture = db.Column(db.String(250))
company_id = db.Column(db.Integer, db.ForeignKey('company.id'))
我并没有真正看出我做错了什么,任何提示都会有所帮助。
谢谢!
我通过包含 primaryjoin 参数解决了我的问题。
class Company(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
contacts = db.relationship('Contact', backref="company", primaryjoin="Company.id==Contact.company_id")
我正在学习 Flask,目前正在使用 Flask 构建地址簿应用程序。使用 SQLAlchemy 实现我的模型时出现以下错误:
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Company.contacts - there are multiple foreign key paths linking the tables. Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference to the parent table.
class Person(db.Model):
__tablename__ = 'person'
id = db.Column(db.Integer, primary_key=True)
address = db.relationship('Address',
secondary=address_person,
backref=db.backref('persons', lazy='dynamic'),
lazy='dynamic')
projects = db.relationship('Project',
secondary="project_person_link",
backref=db.backref('persons', lazy='dynamic'),
lazy='dynamic')
phonenumbers = db.relationship('Phone', backref='Phonenumbers', lazy='dynamic')
mails = db.relationship('Mail', backref='Mails', lazy='dynamic')
class Company(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
contacts = db.relationship('Contact', backref="company", lazy='dynamic')
class Contact(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
christmas_card = db.Column(db.Boolean)
picture = db.Column(db.String(250))
company_id = db.Column(db.Integer, db.ForeignKey('company.id'))
我并没有真正看出我做错了什么,任何提示都会有所帮助。
谢谢!
我通过包含 primaryjoin 参数解决了我的问题。
class Company(Person):
id = db.Column(db.Integer, db.ForeignKey("person.id"), primary_key=True)
title = db.Column(db.String(250))
name = db.Column(db.String(250))
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
contacts = db.relationship('Contact', backref="company", primaryjoin="Company.id==Contact.company_id")