Django的TastyPie地理距离查找(Django TastyPie Geo Distance

2019-09-22 04:04发布

我使用TastyPie的地理距离查找。 这是一个有点困难,因为它的oficially不TastyPie支持。 在Github(https://gist.github.com/1067176)我发现下面的代码样本:

 def apply_sorting(self, objects, options=None):
     if options and "longitude" in options and "latitude" in options:
         return objects.distance(Point(float(options['latitude']), float(options['longitude']))).order_by('distance')

     return super(UserLocationResource, self).apply_sorting(objects, options)

它运作良好,但现在我想有距离的现场结果TastyPie。 你有任何想法如何做到这一点? 只是包括属性不工作在田间地头的“距离”。

在此先感谢您的帮助!

Answer 1:

在元属性定义的字段是不够的,返回的附加值。 他们需要被定义为在资源附加字段:

distance = fields.CharField(attribute="distance", default=0, readonly=True)

该值可以通过定义被填充dehydrate_distance资源内的方法

def dehydrate_distance(self, bundle):
    # your code here

或通过添加一些附加的元件,以在资源元,像这样的查询集:

queryset = YourModel.objects.extra(select={'distance': 'SELECT foo FROM bar'})

Tastypie本身附加了一个名为resource_uri字段不是在queryset的实际存在,看着tastypie资源的源代码可能对你也有帮助。



文章来源: Django TastyPie Geo Distance Lookups