Created
July 6, 2011 13:07
-
-
Save bohde/1067176 to your computer and use it in GitHub Desktop.
Tastypie support for Geodjango distance filtering
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MyGeoResource(Resource): | |
def apply_sorting(self, objects, options=None): | |
if options and "longitude" in options and "latitude" in options: | |
return objects.distance(Point(options['latitude'], options['longitude'])).order_by('distance') | |
return super(MyGeoResource, self).apply_sorting(objects, options) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl localhost:8000/api/v1/mygeoresource?latitude=<>&longitude=<>&limit=1 |
Hi, great example! Do you have any idea how to include the distance in tastypie's fields? Just including it like fields = [... 'distance'] doesnt work.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
thanks for your quick answer.
Yes, works with a standar ModelResource, but the the "coords" fields need to be named different as you send it in the GET params "latitude" and "longitude", my Location class have: latitude and longitude, so, testypie try to make a filtering related with this fields. if I send by GET params "lat" and "lng" then I can use the original object_list in apply_sorting method. thanks again.