1

列を持つ 2 つのモデル間の関係を作成したいと考えてい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'))

この例では、Propertyは多くServiceAreaの に関連付けられているServiceArea可能性があり、 は多くのプロパティに関連付けられている可能性があります。ただし、リレーションシップに使用するセカンダリ テーブルはありません。すべてST_Contains関数によって決定されます。

このコードを実行するたびに、「参照列が ForeignKey または ForeignKeyConstraint に関連付けられていること、または結合条件でforeign() 注釈が付けられていることを確認してください」sqlalchemy.exc.ArgumentErrorという例外が表示されます。

(外部キーではありませんが)を追加するとforeign「remote() アノテーションを使用して、関係のリモート側にある結合条件の要素を正確にマークすることを検討してください」というエラーが表示されます。ServiceArea.geom

foreignand をremote別々に、または一緒に (たとえば、foreign(remote(ServiceArea.geom))and )使用しようとしましremote(foreign(ServiceArea.geom))たが、常に上記のエラーのいずれかが返されます。私は何を間違っていますか?

4

0 に答える 0