Задать вопрос
@vasy7991

Как передать данные из моделей в скрипт js?

Нужно данные из модели сгруппировать в список, например: points = [[-122.63, 45.51], [-122.56, 45.51], [-122.56, 45.55]]
и передать в js скрипт.
Первое значение в списке это latitude, второе longitude. Эти данные нужны для визуализации точек на карте. Если я буду отправлять данные как я их отправляю ниже на views.py, то точки не отображаются. Но если я просто передам список который инициализировал сам, то есть ввел данные в ручную, например:points = [[78, 44]], то на карте всё отображается. Попробовал отобразить список в представлении в итоге получил [[(Decimal('42.417'),), (Decimal('276.098'),)], [(Decimal('57.707'),), (Decimal('265.794'),)]].
Если я правильно понимаю, то причиной проблемы может быть, то что вместо списка вида: points = [[42.417, 276.098], [57.707, 265.794]] передается список [[(Decimal('42.417'),), (Decimal('276.098'),)], [(Decimal('57.707'),), (Decimal('265.794'),)]]. Вопрос как сделать так, чтобы передавался корректный список?
models.py:
from django.db import models
class Station(models.Model):
    idstation = models.IntegerField(db_column='IdStation', primary_key=True)  # Field name made lowercase.
    sitecode = models.CharField(db_column='SiteCode', max_length=4, blank=True, null=True)  # Field name made lowercase.
    namestation = models.CharField(db_column='NameStation', max_length=50, blank=True,
                                   null=True)  # Field name made lowercase.
    latitude = models.DecimalField(db_column='Latitude', max_digits=6, decimal_places=3, blank=True,
                                   null=True)  # Field name made lowercase.
    longitude = models.DecimalField(db_column='Longitude', max_digits=6, decimal_places=3, blank=True,
                                    null=True)  # Field name made lowercase.
    type = models.CharField(db_column='Type', max_length=11, blank=True, null=True)  # Field name made lowercase.
    link = models.CharField(db_column='Link', max_length=150, blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'station'

views.py:
from django.shortcuts import render
from django.views.generic import TemplateView
from .models import Station


def get_point():
    pointlat = Station.objects.values_list("latitude")
    pointlong = Station.objects.values_list("longitude")
    points = []
    i = 0
    while i < len(pointlat):
        points.append([pointlat[i], pointlong[i]])
        i += 1
    return (points)
    # return (point)

class List(TemplateView):
    template_name = 'station_list.html'

    def get(self, request):
        all_stations = Station.objects.values("latitude", "longitude")
        ResponseData = get_point()
        ctx = {
            'all_stations': all_stations, 'ResponseData': ResponseData
        }
        return render(request, self.template_name, ctx)
  • Вопрос задан
  • 248 просмотров
Подписаться 1 Простой 8 комментариев
Решения вопроса 1
alternativshik
@alternativshik
points.append([str(pointlat[i]), str(pointlong[i])])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы