Сериализация GeoJson с помощью Django Rest (Различные функции в одной коллекции)

Как можно сериализовать/дериализовать GeoJson с помощью Django (GeoDjango или django-rest-gis) с несколькими различными типами характеристик (точки, полигоны, линии)

У меня есть разные модели для каждого из типов гео, которые соединены с моделью Route:

    class Marker(Model):
      route = ForeignKey(Route, on_delete=CASCADE)
      popup_html = TextField()
      point = PointField()

      class Meta(Model.Meta):
        pass


    class Polygon(Model):
      route = ForeignKey(Route, on_delete=CASCADE)
      polygon = PolygonField()

      class Meta(Model.Meta):
        pass
   
    class Route(Model):
      name = CharField(max_length=255)

      class Meta(Model.Meta):
        pass

А мой Serializer выглядит следующим образом

  class RouteMarkerSerializer(GeoFeatureModelSerializer):

    class Meta:
        model = Marker
        geo_field = "point"

  class RoutePolygonSerializer(GeoFeatureModelSerializer):

    class Meta:
        model = Polygon
        geo_field = "polygon"

И я хочу получить вывод для набора представлений примерно следующего содержания:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              8.88393,
              51.038918
            ],
            [
              9.039142,
              51.085495
            ],
            [
              9.100952,
              50.945624
            ],
            [
              8.88393,
              51.038918
            ]
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [
          9.066102,
          51.024539
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [
          8.951007,
          51.010103
        ]
      }
    }
  ]
}

Я не могу понять, как это сделать. Если я сериализую это, то получаю Featurecollection of Points и новую FeatureCollection of Polygons, но не в одной коллекции. Надеюсь, вы понимаете мою проблему.

Вернуться на верх