如何使用api创建PointField?

qui*_*era 4 django django-rest-framework

我正在为API使用django-rest-framework,但是当我发出发布请求时会向我发送此错误:

{
    "location": [
        "Invalid format: string or unicode input unrecognized as GeoJSON, WKT EWKT or HEXEWKB."
    ]
}
Run Code Online (Sandbox Code Playgroud)

正文要求:

{
    "location":{
        "type":"Point",
        "coordinates":[37.0625,-95.677068]
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模型如下:

class Address(models.Model):
    location = geo.PointField(srid=4326, blank=True)
    objects = geo.GeoManager()
Run Code Online (Sandbox Code Playgroud)

我的序列化器如下:

class AddressCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Address
        fields = ('location')
Run Code Online (Sandbox Code Playgroud)

请帮帮我!

Tom*_*lch 8

PointFielddjango-extra-fields这里使用。对于前端开发人员来说超级好用和直观(我主要写移动后端)。这样,在序列化器中指定:

from drf_extra_fields.geo_fields import PointField

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

    class Meta:
        model = Address
        fields = ('location')
Run Code Online (Sandbox Code Playgroud)

请求(猜测您的哪个值是经纬度,哪个值是经度):

{
    "location":{
        "latitude": 37.0625
        "longitude": -95.677068,
    }
}
Run Code Online (Sandbox Code Playgroud)