Сериализация модели в GeoDjango, где поле geo_field находится в связанном поле
У меня есть модель, связанная с другой моделью отношением ManyToMany, которая содержит данные о местоположении. Я пытаюсь сериализовать эту модель, но получаю дополнительные поля в моем файле geojson:
Models.py
class Historicalfile(models.Model):
dmsesite = models.ManyToManyField(Dmsesite)
name = models.CharField(verbose_name='Job Name', max_length=250)
...
class Dmsesite(models.Model):
ptgeom = models.PointField(srid=4326, blank=True, null=True)
plgeom = models.PolygonField(srid=4326, blank=True, null=True)
Serializers.py
class DmsesitePtSerializer(serializers.ModelSerializer):
class Meta:
model = Dmsesite
fields = ("ptgeom",)
class HistoricalFileSerializer(serializers.GeoFeatureModelSerializer):
dmsesite = DmsesitePtSerializer(many=True)
class Meta:
model = Historicalfile
geo_field = "dmsesite"
fields = ("company", "name",)
Viewsets.py
class DmsesitePtSerializer(serializers.ModelSerializer):
class Meta:
model = Dmsesite
fields = ("ptgeom",)
class HistoricalFileSerializer(serializers.GeoFeatureModelSerializer):
dmsesite = DmsesitePtSerializer(many=True)
class Meta:
model = Historicalfile
geo_field = "dmsesite"
fields = ("company", "name",)
Это в основном работает, за исключением того, что я получаю "дополнительное" поле в моем выводе GeoJson:
"properties": {
"company": {
"name": "Don-More Surveys"
},
"name": "51938"
}
},
{
"type": "Feature",
"geometry": [
{
"ptgeom": {
"type": "Point",
"coordinates": [
-65.66314398960121,
45.65473652218946
]
}
}
],
Я ожидаю что-то вроде:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-65.09304726799569,
45.90454322923145
]
},
"properties": {
"company": {
"name": "Don-More Surveys"
},
"name": "51938"
}
},
Я полагаю, что моя проблема связана с тем, что это отношение "многие ко многим". Я попытался выполнить сериализацию на противоположном поле (сериализовать поле Dmsesite.ptgeom), но получил аналогичные результаты.
С точки зрения того, что я пытаюсь сделать, мне действительно нужно сохранить это как отношение "многие ко многим". Одна запись Historicalfile может быть связана с несколькими записями Dmsesite, а одна запись Dmsesite может иметь несколько записей Historicalfile, связанных с ней.
Я хочу получить вывод, похожий на Foreignkey - одна запись Historicalfile для каждой комбинации: например, Historicalfile ID=1 -> связано с Dmsesite ID=1 и ID=2. Я хочу, чтобы это сериализовалось как две разные записи в GeoJson.
Цель - отобразить эти данные на карте-листовке с одной "точкой" на запись в файле GeoJson.