Django django.contrib.gis.db.models.functions.Distance以英尺而不是米为单位返回值

Django django.contrib.gis.db.models.functions.Distance to return values in feet instead of meters(Django django.contrib.gis.db.models.functions.Distance以英尺而不是米为单位返回值)
本文介绍了Django django.contrib.gis.db.models.functions.Distance以英尺而不是米为单位返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码将正确筛选:

def nearby(self, latitude, longitude, proximity=None):
        """Get nearby Merchants.

        Custom queryset method for getting merchants associated with
        nearby places.

        Returns:
            A queryset of ``Merchant`` objects.

        """
        point = Point(latitude, longitude)

        # we query for location nearby for places first and then
        # annotate with distance to the same place
        return self.filter(
            places__location__distance_lte=(point, D(ft=proximity))
        ).annotate(distance=models.Min(Distance('places__location', point)))

返回的值
models.Min(Distance('places__location', point))

以米为单位。

可以把它放在脚上吗?

推荐答案

如果我们查看Distance documentation,我们将看到以下内容:

因为Distance属性是一个距离对象,所以您可以轻松地用您选择的单位来表示该值。

虽然这不是entirely true:

这两者之间的关系并不密切。Docs确实说它"返回"距离对象,但还有一个额外的步骤:

django.contrib.gis.db.models.functions.Distance是一个数据库函数,它接受两个表达式(可能包括数据库字段名),并返回一个可用作查询一部分的Func对象。

简单地说,它需要在数据库中执行。它将使用数据库函数(例如postgis ST_Distance)计算距离,然后将其作为django.contrib.gis.measure.Distance对象带回


综上所述,您可以这样做:

... .annotate(distance=models.Min(Distance('places__location', point).ft))

这篇关于Django django.contrib.gis.db.models.functions.Distance以英尺而不是米为单位返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)