1

Geometry我想在具有列的两个模型之间创建关系。例如:

from geoalchemy2.types import Geometry
from flask.ext.sqlalchemy import SQLAlchemy
from myapp import app

db = SQLAlchemy(app)

class Property(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    street_address = db.Column(db.Text)
    geom = db.Column(Geometry(geometry_type='POINT'))

    service_areas = db.relationship(
        'ServiceArea',
        primaryjoin='ServiceArea.geom.ST_Contains(Geocode.geom)',
        lazy='joined',
        uselist=True,
        viewonly=True,
    )

class ServiceArea (db.Model):
    name = db.Column(db.Text)
    value = db.Column(db.Text)
    geom = db.Column(Geometry(geometry_type='MULTIPOLYGON'))

在这个例子中,aProperty可能与许多ServiceAreas 相关联,并且 aServiceArea可能与许多属性相关联。但是,没有可供我用于关系的辅助表——这完全由ST_Contains函数决定。

每当我运行此代码时,我都会收到一个sqlalchemy.exc.ArgumentError异常,告诉我“确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或者在连接条件中使用 foreign() 注释进行注释。”

当我在foreign周围添加ServiceArea.geom(即使它不是外键)时,我收到一条错误消息,提示我“考虑使用 remote() 注释来准确标记连接条件中位于关系远程端的那些元素。”

我尝试过单独使用foreignremote一起使用和(例如,foreign(remote(ServiceArea.geom))remote(foreign(ServiceArea.geom))),但总是得到上述错误之一。我究竟做错了什么?

4

0 回答 0