次のような単純なモデルがいくつかあります。
class StoreImage(Base):
imagepath = Column(Text, nullable=False)
store_id = Column(Integer, ForeignKey('store.id'), nullable=False)
store = relationship('Store')
class Store(Base):
status = Column(Enum('published', 'verify', 'no_position',
name='store_status'),
nullable=False, default='verify')
type = Column(Enum('physical', 'web', name='store_type'),
nullable=False, default='physical')
name = Column(Text, nullable=False)
street = Column(Text)
postal_code = Column(Text)
city = Column(Text)
country = Column(Text)
phone_number = Column(Text)
email = Column(Text)
website = Column(Text)
location = Column(Geometry(geometry_type='POINT', srid=4326))
is_flagship = Column(Boolean, default=False)
images = relationship(StoreImage)
今、私がやりたいのは、次のようなクエリです。
q = Store.query.filter(Store.is_flagship == True).with_entities(
Store.id,
Store.status,
Store.slug,
Store.type,
Store.name,
Store.street,
Store.postal_code,
Store.city,
Store.country,
Store.phone_number,
Store.email,
Store.website,
func.ST_AsGeoJSON(Store.location).label('location'),
Store.images,
)
クエリは機能しますが、すべての行をStore.images
返すだけです。インスタンス/KeyedTuplesTrue
のリストを返すようにするにはどうすればよいですか?StoreImage
Store.query
主に、GeoJSON形式で場所を返す方法が他に見つからないため、この方法でやりたいと思っています。
編集:私にとっての1つの解決策はStore
、クエリからインスタンスを返しlocation
、宣言されたモデルまたは可能であれば他の方法でGeoJSONを追加することです。ただし、これを行う方法がわかりません。