I've done it before using a post save signal, although I had lat,lng = NULL
in the schema so that differs from your request here.  After saving, I would
issue an update.  I forget why I didn't use a pre-save signal.

Aside from signals, you may also be able to use a model field default with a
callable to set the lat/lng of the FarmersMarket object.  It's an idea I
haven't tested, so I'm not positive it will work.

You could write some geocoding middleware that sets request.POST data in
some way as it passes through.  I don't really like this solution since it
is kind of "magical."

Brian

On Mon, Oct 17, 2011 at 3:30 PM, Jeff Heard <[email protected]>wrote:

> class FarmersMarket(ModelForm):
>   class Meta:
>      model = models.FarmersMarket
>      exclude = ('location',)
>
>   def clean(self):
>      place, (lat, lng) = _g.geocode(self.cleaned_data['address'])
>      self.cleaned_data['location'] = Point(lng,lat)
>      return self.cleaned_data
>
> ----
>
> Here's my code minus the exception handling.  Now what I *want* to
> have happen is that the models.FarmersMarket.location field on the
> model is set sometime shortly after the form is submitted by the user,
> by way of geocoding the data, rather than having them tediously enter
> a POINT wkt string in the textarea field.  So my idea was to put a
> call to geopy.Google.geocode in FarmersMarket.self.clean.  I can
> confirm clean() is getting called, but for some reason, the 'location'
> field isn't being set in the model.  I get a whine from Django that
> the location field cannot be NULL (which is true, it can't).
>
> Can anyone tell me how I'm supposed to be doing this? I want them to
> enter an address on the form, not a latitude/longitude pair.
>
> -- Jeff
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>


-- 
Brian Bouterse
ITng Services

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to