Сериализатор Geojason выдает нулевую геометрию
У меня та же проблема, что и в этом вопросе, хотя она якобы была исправлена в Django 1.9, поэтому я подумал, что, возможно, я делаю что-то не так.
Я пытаюсь сериализовать мои данные в geodjango:
homes = serialize(
"geojson",
Home.objects.all(),
geometry_field="point",
fields=["address_point"],
)
Затем я распечатываю его, и он показывает, что геометрия равна нулю следующим образом:
{
"type":"FeatureCollection",
"crs":{
"type":"name",
"properties":{
"name":"EPSG:4326"
}
},
"features":[
{
"type":"Feature",
"id":1,
"properties":{
"address_point":"SRID=4326;POINT (15.57385209377286 7.776164310995906)"
},
"geometry":null
}
]
}
Далее, когда я пытаюсь получить доступ к данным в моем javascript (используя django-geojson) и затем вывести их в консоль, результат получается null
. Я считаю, что эти две проблемы связаны между собой.
{% load geojson_tags %}
var homes = {{ homes|geojsonfeature|safe }};
console.log(homes)
Буду признателен за любое понимание того, как это исправить, спасибо!
P.S. Результаты замораживания труб
asgiref==3.8.1
black==24.4.2
certifi==2024.6.2
charset-normalizer==3.3.2
click==8.1.7
Django==5.0.6
django-countries-plus==2.2.0
django-environ==0.11.2
django-geojson==4.1.0
django-languages-plus==2.1.1
django-safedelete==1.4.0
idna==3.7
isort==5.13.2
mypy-extensions==1.0.0
packaging==24.1
pathspec==0.12.1
pillow==10.3.0
platformdirs==4.2.2
psycopg2-binary==2.9.9
requests==2.32.3
setuptools==69.5.1
sqlparse==0.5.0
urllib3==2.2.2
wheel==0.43.0
У меня есть частичный ответ: Мое поле геометрии должно быть address_point, так что теперь у меня есть:
def map(request):
template_name = "map.html"
homes = serialize(
"geojson",
Home.objects.all(),
geometry_field="address_point",
fields=[],
)
context = {"homes": homes}
return render(request, template_name, context)
Теперь он печатается правильно, как и геомерты. Однако мне еще предстоит выяснить, как заставить его отображаться на моей карте. Все еще работаю над этим.
Редактирование:
Полностью решена без использования каких-либо библиотек или чего-либо, выходящего за рамки простого leafletjs. Теперь у меня есть следующий код в моем .html-файле:
let homes = JSON.parse('{{ homes|safe }}')
L.geoJson(homes).addTo(map);