我正在尝试使用 SqlAlchemy 0.8.4 和 GeoAlchemy2 0.2.2 动态填充字段。目标是在从数据库中读取设施时根据设施的位置将区域分配给设施。代码如下所示:
class District(Base):
__tablename__ = 'districts'
id = Column(Integer, primary_key=True)
geom = Column('geog', Geometry(geometry_type='POLYGON'), nullable=False)
class Facility(Base):
__tablename__ = 'facilities'
id = Column(Integer, primary_key=True)
pos = Column('geog', Geometry(geometry_type='POINT'), nullable=True)
district = relationship(District,
viewonly=True,
primaryjoin="District.geom.ST_Contains(Facility.pos)",
foreign_keys=[District.id])
但这给了我以下错误:
ArgumentError:在关系 Facility.district 上找不到主连接条件“ST_Contains(districts.geog, facility.geog)”的任何相关外键列。确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或者在连接条件中使用 foreign() 注释进行注释
我真的很想避免这些类之间的外键关系,因为地区在不断变化,但想获得一个具有地区集的设施,而无需再次查询数据库。
我应该如何解决这个问题?