4

我正在尝试使用 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() 注释进行注释

我真的很想避免这些类之间的外键关系,因为地区在不断变化,但想获得一个具有地区集的设施,而无需再次查询数据库。

我应该如何解决这个问题?

4

0 回答 0