私はこの2つのモデルを持っています。関連するManyToManyフィールドとの距離によるソート
class Store(models.Model):
coords = models.PointField(null=True,blank=True)
objects = models.GeoManager()
class Product(models.Model):
stores = models.ManyToManyField(Store, null=True, blank=True)
objects = models.GeoManager()
ポイントまでの距離によってソートされた商品を入手したいと考えています。プロダクトの店舗フィールドが外部キーだった場合、私はこれを行い、それが動作します。
pnt = GEOSGeometry('POINT(5 23)')
Product.objects.distance(pnt, field_name='stores__coords').order_by('distance')
しかし、フィールドが、それは
ValueError: <django.contrib.gis.db.models.fields.PointField: coords> is not in list
を破る多対多分野であるので、それはそれは距離を計算するために使用すべき店舗のかが明確ではないのですが、任意のがあるので、私は一種のこれを期待これを行う方法。
特定のポイントまでの距離で注文された製品のリストが必要です。
私もこの困難を抱えています。 GeoDjangoではこれができないのでしょうか?おそらく、それのための生のSQLを作成する必要がありますか? –
@JoeJ私は可能な答えとして投稿しますが、私はそれが好きではありません。おそらく未処理のSQLは機能するかもしれませんが、私は空間問合せとそれほど混乱しません。答えをチェックして、あなたの考えを見てください。 – manuel
商品は 'ManyToMany'から' Store'までありますが、 'PointField'を持つ店舗です。製品は1つ以上の店舗に置くことができます... **店舗数が1店舗以上の商品の距離ですか**?より高いです ?すべて ? – AlvaroAV