Как округлить расстояние Геоджанго
В Django 1.9 / Python 2.7 у меня есть следующее представление:
qs = ThePlace.objects.filter(lnglat__distance_lte=(lnglat, D(km=30))).distance(lnglat).order_by('distance')
В моем шаблоне я отображаю расстояния, когда зацикливаюсь на объектах:
{% for qsplace in qs %}
{{ qsplace.distance }}
{% endfor %}
который отображает "25.717617095 м", например.
Я хотел бы отобразить округлые цифры (26 м). Если больше 1 км, я хотел бы показать 3 км, например
Я разработал первый шаблон тега для округления фигур:
from django import template
register = template.Library()
@register.filter
def dividebyth(value):
print(type(value))
value = round(value, 2)
return value
И вставьте в мой шаблон: {{ qsplace.distance|divbyth }}
что приводит к следующей ошибке:
TypeError: a float is required
Кажется, я не могу округлить объект расстояния.
Есть ли способ справиться с этим?
Спасибо!
1 ответ
Из документов:
Поскольку
distance
атрибут являетсяDistance
объект, вы можете легко выразить значение в единицах по вашему выбору. Например,city.distance.mi
это значение расстояния в милях иcity.distance.km
это значение расстояния в километрах.
Чтобы получить значение расстояния как поплавок в метрах, попробуйте это: {{ qsplace.distance.m|dividebyth }}