我有几个表,以一对多关系连接成一条链(名称改为强调,有一条链):
国家<- City <- Street <- House
我需要在 House 模型中有一个属性才能访问它只有一个国家/地区。
街道与房屋通过关系连接,城市与街道、乡村与城市连接。有一个绝对清晰的链条。 我已经遇到了连接 House 和 City 的问题,但使用 Association_proxy 解决了它:
class House(db.Model):
...
street= db.relationship('Street', foreign_keys='House.street_id', backref='streets')
city = association_proxy('street', 'city')
class Street(db.Model):
...
city = db.relationship('City', foreign_keys='Street.city_id', backref='streets')
class City(db.Model):
...
country = db.relationship('Country', foreign_keys='City.country_id', backref='cities')
但这些都没有帮助我将国家与家庭联系起来。 我需要按国家/地区进行过滤,因此 @property 没有帮助。 是的,似乎在 SQLAlchemy 中没有实现按 Association_proxy 或关系进行过滤(我有一个异常),但我也已经解决了它,创建了特殊的方法来过滤。 Association_proxy 似乎只使用两个模型名称:第一个作为直接目标,第二个作为最终目标。或者有什么办法可以使用更多?
我也确实找到了关系文档的一部分“复合“辅助”连接”,但它似乎用于更困难的情况(我不明白,为什么C表中应该有a_id,我不明白)城市中没有 House_id,并且认为没有必要)。还是我错过了什么?
所以现在我需要一种使用其中一种方法从 House 获取 Country 的方法。有没有办法使用多个模型作为代理或通过它们建立直接关系? 我在文档中没有找到很好的解释。可以吗?
id - Country_id - city_id - street_id - house_id(house_id 是唯一的)。