Как получить ответ GeoJSON в Django REST Framework GIS

Я пытаюсь получить ответ GeoJSON, используя django rest framework, но сталкиваюсь с проблемой

argument of type 'NoneType' is not iterable

Это мой код

class NewPark(models.Model):
    name = models.CharField(max_length=256)
    geometry = models.GeometryField(srid=3857, null=True, blank=True)
    objects = models.GeoManager()

    class Meta:
        db_table = u'new_park'

    def __unicode__(self):
        return '%s' % self.name


class NewParkSerializer(GeoFeatureModelSerializer):
    class Meta:
        model = NewPark
        geo_field = "geometry"
        fields = ('id', 'name', 'geometry')

class NewParkViewSet(viewsets.ModelViewSet):

    def get_queryset(self):

        queryset = NewPark.objects.all()
        return queryset

Когда я изменяю сериализованный тип на 'erializers.GeoModelSerializer', тогда он работает, но я хочу получить ответ GEOJSON

Я искал о GeoFeatureModelSerializer, но не могу найти ни одного примера geo_field = "geometry". Все примеры о geo_field = "point"

Пожалуйста, помогите мне разобраться в этом вопросе?

1 ответ

Решение

Вы могли бы иметь только вышеупомянутую ошибку в просматриваемом API, потому что средство рендеринга HTML шаблона djanog-rest-framework по умолчанию не работает с форматом GeoJson.

Чтобы проверить, так ли это, попробуйте позвонить конечной точке API и запросить ее в формате json, т.е. /api/newpark.json или эквивалентно /api/newpark?format=json, Это должно показать вам данные geojson, если с вашим внутренним API все в порядке, и проблема в доступной для просмотра HTML-форме.

Если вы хотите иметь доступный для просмотра API для вашей конечной точки GeoJson, вам может потребоваться изменить html-шаблон, используемый для отображения вашей конечной точки API.

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