「アドレス」という単一のフィールドで構成される非常に単純な Django フォームがあります。
class AddressSearchForm(forms.Form):
"""
A form that allows a user to enter an address to be geocoded
"""
address = forms.CharField()
このデータは保存していないので、おそらくフォームを使用する必要さえありません。検索で使用するためにデータを収集しているだけです。しかし、検証を実行したい:
def clean_address():
data = self.cleaned_data
g = geocoders.Google()
try:
place, (lat,lng) = g.geocode(data['address'])
except (GQueryError):
raise forms.ValidationError('Please enter a valid address')
except (GeocoderResultError, GBadKeyError, GTooManyQueriesError):
raise forms.ValidationError('There was an error geocoding your address. Please try again')
except:
raise forms.ValidationError('An unknown error occured. Please try again')
さらに、このジオコーディングされた結果を使用して、Point オブジェクトをビューに渡したいと考えています。
from django.contrib.gis.geos import Point
point = Point(lng, lat)
私の質問は、住所とポイント データの両方をビューに渡す方法です。住所を渡してビューで再ジオコーディングすることもできますが、それはコードを複製することになります。では、フォームからポイント オブジェクトを渡すにはどうすればよいでしょうか。非表示フィールドを使用する必要がありますか? 他の提案?前もって感謝します。