任务是生成一个城市字典,这种类型:
{city: {'distance': '443 mi', 'duration': '9 hours 0 mins'}}
这是模型:
@python_2_unicode_compatible
class Route(Base):
cities = models.ManyToManyField(City)
@cached_property
def cities_arrival_time(self, *args, **kwargs):
r = lambda: x, y: requests.get(
'https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&mode=driving&origins={}&destinations={}&key={}'.format(
x.name,
y.name,
settings.GEOPOSITION_GOOGLE_MAPS_API_KEY
)
)
之后,您需要以duration这样的方式进行转换,以获得datetime
问题是发送我不明白如何编写一个将迭代QuerySet排除最后一个元素的生成器。
我做的完全不同。
它是这样工作的:
# 归还一个
origin(我们计算的点)和一个destination(目的地)。如果我们想得到文本格式的结果(它不太准确),那么我们这样做:
并得到结果:
但是,如果您需要计算 one
origin和几个之间的距离destination,那么我们这样做:实际上,距离是不同的。但是莫斯科和圣彼得堡之间的区别或多或少是准确的。
这就是我们以米为单位获取数据的方式:
所以,我们得到
duration同样,使用文本显示:
如果你需要找出几个
origins和之间的距离destinations,那么像这样:但是像这样:
我们得到一个元组列表,其中第一个元素是目的地,第二个是到第一个元素的距离
origin