3

У меня есть географическая структура модели, где несколько событий могут иметь такое же расположение:Джанго-отдых-каркасный ГИС, связанные с полем

class Event(models.Model): 
    name = models.CharField(max_length=128, blank=True, null=True) 
    location = models.ForeignKey('MarketLocation', null=True, blank=True) 

class EventLocation(models.Model): 
    location = models.PointField(srid=4326) 

Я использую GeoFeatureModelSerializer предоставленные Джанго-покой каркасы гиса для вывода один объект JSON, но PointField визуализируется в виде строки вместо пары координат:

так что дает мне:

"location": "POINT (-1.909 53.7094)" 

вместо из:

"point": { 
     "type": "Point", 
     "coordinates": [-123.0208, 44.0464], 
    }, 

Логический ответ был бы определить поле в сериализаторе:

geo_field = eventlocation__location 

Но это, кажется, не имеет никакого значения для вывода, что заставляет меня думать, что это, вероятно, не работает, но, вероятно, это должно произойти. Кто-нибудь сделал эту работу, и если да, то как?

ответ

1

Я нашел это сегодня утром, и это также относится и к DRF-гис:

Django Rest Framework - Get related model field in serializer

Я создал сериалайзер на EventLocation и определил его как «место» в EventSerializer и точка выводится как геойзона.

1

Я делаю что-то подобное, но с MultiPolygon вместо Point. Вот мой сериализатору:

class AreaSerializer(gis_serializers.GeoFeatureModelSerializer): 

    class Meta: 
     model = Area 
     geo_field = "geom" 

Возможно, не нужно ссылаться на модель в geo_field, а просто констатирую поле непосредственно?

Вот репо моего Serializer, если это может помочь:

https://github.com/kelvinn/alerted-us-web/blob/master/apps/alertdb/serializers.py

+0

А - Я вижу, вы ответили на свой вопрос в комментарии. :) – kelvinn

Смежные вопросы