Как я могу создать поле точек с помощью api?

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Я использую django-rest-framework для API, но когда я делаю post-запрос, мне отправляется эта ошибка:

 {
    "location": [
        "Invalid format: string or unicode input unrecognized as GeoJSON, WKT EWKT or HEXEWKB."
    ]
}
  

Основной запрос:

 {
    "location":{
        "type":"Point",
        "coordinates":[37.0625,-95.677068]
    }
}
  

Моя модель выглядит следующим образом:

 class Address(models.Model):
    location = geo.PointField(srid=4326, blank=True)
    objects = geo.GeoManager()
  

Мой сериализатор — это follow:

 class AddressCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Address
        fields = ('location')
  

Помогите мне, пожалуйста!

Ответ №1:

Для этого я использую PointField from django-extra-fields . Превосходный и интуитивно понятный интерфейс для разработчиков (в основном я пишу мобильные бэкенды). При этом в вашем сериализаторе укажите:

 from drf_extra_fields.geo_fields import PointField

class AddressCreateSerializer(serializers.ModelSerializer):
    location = PointField()

    class Meta:
        model = Address
        fields = ('location')
  

Запрос (угадайте, какое из ваших значений равно широте, а какое — длине):

 {
    "location":{
        "latitude": 37.0625
        "longitude": -95.677068,
    }
}
  

Комментарии:

1. Производство heroku

2. Проблема решена. На сервере не установлена библиотека GEOS. Все еще спасибо за твой ответ, чувак