У меня есть запрос, который я отправляю через контекст следующим образом:
context = {
'locations' = TravelData.objects.exclude(Q(from_lat__isnull=True) | Q(from_long__isnull=True) | Q(to_lat__isnull=True) | Q(to_long__isnull=True)).values('from_lat', 'from_long', 'to_lat', 'to_long')
}
Здесь есть несколько значений (from_lat
и from_long
) и (to_lat
и to_long
). Я хотел бы добавить аналогичные значения только один раз, т. Е. Я должен проверять одновременно и значения from
, и значения to
и исключать их наличие.
Во внешнем интерфейсе я отображаю эти местоположения на карте координаты точки будут
[from_long, from_lat] or [to_long, to_lat]
Как изменить вышеуказанный запрос, чтобы получить наиболее эффективный набор запросов?
Редактировать:
Это пример набора запросов:
<QuerySet [{'to_lat': '52.92732', 'to_long': '77.63575', 'from_lat': '52.92415', 'from_long': '77.67229'}, {'to_lat': '52.92768', 'to_long': '77.62664', 'from_lat': '52.96691', 'from_long': '77.74935'}, {'to_lat': '53.047926', 'to_long': '77.597766', 'from_lat': '52.937222', 'from_long': '77.626915'}, {'to_lat': '52.97143', 'to_long': '77.63914', 'from_lat': '52.98999', 'from_long': '77.55332'}, {'to_lat': '52.92732', 'to_long': '77.63575', 'from_lat': '52.92415', 'from_long': '77.67229'}, {'to_lat': '52.92768', 'to_long': '77.62664', 'from_lat': '52.96691', 'from_long': '77.74935'}, {'to_lat': '53.047926', 'to_long': '77.597766', 'from_lat': '52.937222', 'from_long': '77.626915'}, {'to_lat': '52.97143', 'to_long': '77.63914', 'from_lat': '52.98999', 'from_long': '77.55332'}, {'to_lat': '52.97143', 'to_long': '77.63914', 'from_lat': '58.98999', 'from_long': '80.55332'}]>
В теге <script>
файла html часть кода выглядит следующим образом:
var locations_object = {
type: 'FeatureCollection',
features: [
{% for i in locations %}
{
type: 'Feature',
geometry: {
type: 'geojson',
coordinates: ["{{i.from_long}}", "{{i.from_lat}}"]
},
properties: {
title: 'from_locations',
description: 'from_locations'
}
},
{
type: 'Feature',
geometry: {
type: 'geojson',
coordinates: ["{{i.to_long}}", "{{i.to_lat}}"]
},
properties: {
title: 'to_locations',
description: 'to_locations'
}
},
{% endfor %}
]
};
Так что здесь есть местоположение с одни и те же значения координат повторяются много раз в базе данных, как показано в переменной locations
контекста. Но при рендеринге карты это нужно только один раз. Таким образом, в запросе в контексте, как я могу взять пары [to_lat, to_long]
и [from_lat, from_long]
только один раз, если это возможно? Например: в locations
из context
первые четыре элемента повторяются снова. Поэтому я должен рассмотреть это только один раз. Затем в девятом элементе to_lat
и to_long
повторяются, поскольку они уже присутствовали в предыдущем элементе. Поэтому я должен исключить это, но from_lat
и from_long
отсутствуют в предыдущих элементах. Я должен рассмотреть только это в девятом элементе. Аналогично для всех условий.