2016-10-21 2 views
0

Ich bin mit django-Rest-Rahmen für die API, aber wenn ich eine Post-Anforderung sendet mir diesen Fehler machen:Wie kann ich ein PointField mit einer API erstellen?

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

Körper Anfrage:

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

Mein Modell ist wie folgt:

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

Mein Serializer ist eine Folge:

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

Hilf mir bitte!

Antwort

1

Ich verwende dafür PointField von django-extra-fields. Supernice und intuitiv für Frontend-Entwickler (ich schreibe meistens mobile Backends). Damit in Ihrem Serializer angeben:

from drf_extra_fields.geo_fields import PointField 

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

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

Request (eine Vermutung darüber, welche Ihren Wertes nehmen ist lat und das ist lon):

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

Es in Entwicklung funktioniert, aber nicht in der Produktion. – quienesmera

+0

Produktion ist heroku – quienesmera

+0

Problem gelöst. Auf dem Server ist die GEOS-Bibliothek nicht installiert. Danke immer noch für deine Antwort – quienesmera

Verwandte Themen