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