Я использую SQLAlchemy для моего Flask приложения, и я wi sh для соединения двух таблиц, где должны быть установлены отношения для двух ForeignKey, которые уникальны только вместе.
Моя первая таблица выглядит так:
class Address(db.Model):
__tablename__ = 'Address'
idx = db.Column(db.Integer, primary_key=True)
a_code1 = db.Column(db.Integer)
a_code2 = db.Column(db.Integer)
property = db.relationship('Property', backref='Address', uselist=False, lazy='select')
И моя вторая таблица выглядит следующим образом (p_code1 + p_code2 уникальны вместе, а не отдельно)
class Property(db.Model):
__tablename__ = 'Property'
__table_args__ = (db.UniqueConstraint('p_code1', 'p_code2', name='property_id'), )
idx = db.Column(db.Integer, primary_key=True)
p_code1 = db.Column(db.Integer, db.ForeignKey('Address.a_code1'))
p_code2 = db.Column(db.Integer, db.ForeignKey('Address.a_code2'))
addresse = db.relationship('Address', backref='Property', foreign_keys=[p_code1, p_code2], uselist=False, lazy='select')
База данных инициализируется правильно, однако, когда я пытаюсь чтобы добавить что-то в базу данных, я получаю следующие ошибки:
sqlalchemy.exc.AmbiguousForeignKeysError: Can't determine join between 'Address' and 'Property'; tables have more than one foreign key constraint relationship between them. Please specify the 'onclause' of this join explicitly.
...
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Address.property - 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.
Кто-нибудь сможет определить, что я делаю неправильно?