ユーザーに住所や郵便番号などの地理情報をテキスト検索に入力してもらいたいようです。これが私が行った方法ですが、まだどのようにスケーリングするかはわかりません。私はちょうど5分前にこれを終えました。
SearchForm または他のオプションの 1 つからサブクラス化されたカスタム検索フォームを作成する必要があります (私にとっては FacetedSearchForm でした)。検索方法を上書きします。
まず検索文字列を点に変えます。http://code.google.com/p/geopy/wiki/GettingStarted
class MainSearchForm(FacetedSearchForm):
def search(self):
query = self.cleaned_data['q']
g = geocoders.Google()
place, (lat, lng) = g.geocode('%s' % query)
pnt = fromstr('POINT(%s %s)' % (lng, lat), srid=4326)
次に、検索クエリ セットを取得します。ここでは、距離でフィルタリングした load_all_queryset() を使用できるようにするため、RelatedSearchQuerySet を使用しました。GeoDjango Distance Queriesで救助するのはGeoDjangoです。距離クエリを使用すると、距離がより小さい、より大きいなどでフィルタリングする方法を選択できます。また、任意の単位で距離自体も選択できます。
sqs = RelatedSearchQuerySet().load_all()
sqs = sqs.load_all_queryset(Listing,
Listing.objects.filter(location__distance_lte=(pnt, D(mi=20))))
return sqs
それは堅実なスタートになるはずです。これがあなたを正しい方向に向けることを願っています。