Сериализация 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, но не в одной коллекции. Надеюсь, вы понимаете мою проблему.