django-rest-framework-gis связанное поле

У меня есть структура географической модели, где несколько событий могут иметь одинаковое местоположение:

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 предоставляемый django-rest-framework-gis для вывода одного объекта JSON, но PointField отображается как строка вместо пары координат:

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

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

Вместо:

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

Логичным ответом будет определение поля в сериализаторе:

geo_field = eventlocation__location

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

2 ответа

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

Django Rest Framework - Получить поле связанной модели в сериализаторе

Я создал сериализатор в EventLocation и определил его как "местоположение" в EventSerializer, а точка выводится как геометрия геоджона.

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

class AreaSerializer(gis_serializers.GeoFeatureModelSerializer):

    class Meta:
        model = Area
        geo_field = "geom"

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

Вот репозиторий для моего Сериализатора, если это может помочь:

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

Другие вопросы по тегам