Как создать поле просмотра только в SqlAlchemy и GeoAlchemy2?
Я пытаюсь динамически заполнить поле, используя 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: Не удалось найти соответствующие столбцы внешнего ключа для условия первичного соединения 'ST_Contains(districts.geog, Facilities.geog)' в отношении Facility.district. Убедитесь, что ссылающиеся столбцы связаны с ForeignKey или ForeignKeyConstraint или помечены в условии соединения аннотацией foreign()
Мне бы очень хотелось, чтобы между этими классами не было отношения по иностранным ключам, поскольку районы постоянно меняются, но я хотел бы получить объект с набором округов, не запрашивая базу данных снова.
Как мне решить это?