0

地理位置情報を含むオブジェクトを検索するために、Django (1.5.1) と Haystack (2.0.1) を使用しようとしています。

from django.contrib.gis.db import models as geomodels

class GeoModel(geomodels.Model):
    geo_point = geomodels.PointField()
    # Geographic Locator manager
    objects = geomodels.GeoManager()
    ...

地理位置情報に基づいてフィルタリングする必要があります。次のクエリは、基本的にGeoModelを使用しているため機能しgeomodels.GeoManagerます。

from django.contrib.gis.measure import D
from django.contrib.gis.geos import Point
...

center = Point(lat, lng)
radius = D(km=100)
GeoModel.objects.all().filter(geo_point__distance_lte=(center, radius))

問題は、Haystack を使用して地理位置情報に基づいて結果をフィルタリングしようとしたときです。SearchView のサブクラスを作成しました。

 from haystack.views import SearchView
 ...

 class MySearchView(SearchView):

    def get_results(self):
        center = Point(lat, lng)
        radius = D(km=100)
        results = super(MySearchView, self).get_results()  # << OK, get all results 
        return results.filter(geo_point__distance_lte=(center, radius))  # << WRONG, no results

では、Haystack のビュー/フォームをカスタマイズして、特定の場所に基づいて結果をフィルタリングするにはどうすればよいでしょうか? 前もって感謝します。

4

1 に答える 1