Преобразование запроса в geojson

Мне нужна помощь с этой ошибкой, которую мне выдают, и она заключается в следующем. У меня есть база данных, которая при выполнении запроса имеет список точек по всему городу, эти точки находятся в формате широты и долготы отдельно, теперь мне нужно передать их в geodjango и мне нужно сериализовать данные, чтобы преобразовать их в geojson, но я не могу найти способ найти решение, у меня есть такие данные из базы данных:

{'type': 'Feature', 'properties': {'name': 'Centro Puerto Lopez', 'direction': 'Calle 5 # 7-28', 'latitude': '4.08467', 'longitude': '-72.9558', 'city': 'Puerto Lopez', 'department': 'Meta', 'pk': '97'}, 'geometry': None}, {'type': 'Feature', 'properties': {'name': 'Bachue Acacias', 'direction': 'Carrera 35 # 14-23', 'latitude': '3.98454', 'longitude': '-73.777', 'city': 'Acacias', 'department': 'Meta', 'pk': '98'}, 'geometry': None}, {'type': 'Feature', 'properties': {'name': 'Ciudad Porfia', 'direction': 'Carrera 43 # 67-04 Sur', 'latitude': '4.07094', 'longitude': '-73.6695', 'city': 'Villavicencio', 'department': 'Meta', 'pk': '99'}, 'geometry': None}, {'type': 'Feature', 'properties': {'name': 'Ciudad Milenio', 'direction': 'Calle 53 S # 33 - 02', 'latitude': '4.08341', 'longitude': '-73.6645', 'city': 'Villavicencio', 'department': 'Meta', 'pk': '100'}, 'geometry': None}]}

Данные отображаются, я пытаюсь сериализовать их следующим образом:

from django.http import JsonResponse
from django.contrib.auth.decorators import login_required
from django.urls import reverse_lazy
from django.views.generic import ListView, CreateView, UpdateView, DeleteView, TemplateView
from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_exempt
from django.core.serializers import serialize
import json

from apps.pdv.models import Pdv, Market
from apps.pdv.forms import PdvForm

# Create your views here.

# Clase para listar los pdv
class baseView(TemplateView):
    template_name = "base/maps_base.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        market =  Pdv.objects.all()
        # for mark in market:
        #     print(mark)
        context["markers"] = json.loads(serialize("geojson", Market.objects.all()))
        context["markers_"] = json.loads(serialize("geojson", Pdv.objects.all()))
        # print(context["markers"])
        print(context["markers_"])
        return context

но данные, которые возвращает сериализация, выглядят так, очевидно, что она не понимает, как передать ей широту и долготу, чтобы преобразовать их в точку.

{'type': 'Feature', 'properties': {'name': 'Ciudad Porfia', 'direction': 'Carrera 43 # 67-04 Sur', 'latitude': '4.07094', 'longitude': '-73.6695', 'city': 'Villavicencio', 'department': 'Meta', 'pk': '99'}, 'geometry': None}, {'type': 'Feature', 'properties': {'name': 'Ciudad Milenio', 'direction': 'Calle 53 S # 33 - 02', 'latitude': '4.08341', 'longitude': '-73.6645', 'city': 'Villavicencio', 'department': 'Meta', 'pk': '100'}, 'geometry': None}]}

Надеюсь, вы сможете лучше направить меня, чтобы решить мою ошибку, я благодарю вас от всего сердца за помощь.

Взгляните на это (если вы этого еще не сделали): https://docs.djangoproject.com/en/1.11/ref/contrib/gis/serializers/

На самом деле дело не в том, что сериализатор не понимает ваши данные, ваши данные просто не отформатированы идеальным образом, почему бы вам уже не вывести их с помощью геометрического объекта, который содержит правильные coordinates: [lat, lng]?

Можете ли вы также опубликовать ваш фрагмент models.py ?

Причина, по которой ваш serialize не возвращает правильный geojson, заключается в том, что он ожидает GeometryField:

Пример:

enter image description here

enter image description here

Решение 1:

Если вы можете изменить models.py

Итак, для того чтобы сериализация работала, необходимо создать поле геометрии (в вашем случае PointField). например :

В файле models.py добавьте

point = models.PointField(srid=4326, null=True,blank=True)
Вернуться на верх