首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-rest-framework-gis相关字段

django-rest-framework-gis相关字段
EN

Stack Overflow用户
提问于 2015-01-26 07:48:49
回答 2查看 1.9K关注 0票数 3

我有一个地理模型结构,其中多个事件可以具有相同的位置:

代码语言:javascript
复制
class Event(models.Model):
    name = models.CharField(max_length=128, blank=True, null=True)
    location = models.ForeignKey('MarketLocation', null=True, blank=True)

class EventLocation(models.Model):
    location = models.PointField(srid=4326)

我使用django-rest-framework-gis提供的GeoFeatureModelSerializer来输出单个JSON对象,但PointField被呈现为字符串而不是坐标对:

所以它给了我:

代码语言:javascript
复制
"location": "POINT (-1.909 53.7094)"

而不是:

代码语言:javascript
复制
  "point": {
        "type": "Point",
        "coordinates": [-123.0208, 44.0464],
   },

合乎逻辑的答案是在序列化程序中定义字段:

代码语言:javascript
复制
geo_field = eventlocation__location

但这似乎对输出没有任何影响,这让我认为它可能不起作用,但它可能应该起作用。有没有人做到了这一点?如果是的话,是如何做到的?

EN

回答 2

Stack Overflow用户

发布于 2015-01-26 21:23:07

我今天早上发现了这个,它也适用于DRF-gis:

Django Rest Framework - Get related model field in serializer

我在EventLocation上创建了一个序列化程序,并在EventSerializer中将其定义为'location‘,然后将该点输出为geojson几何图形。

票数 1
EN

Stack Overflow用户

发布于 2015-01-27 21:00:41

我正在做类似的事情,但是使用MultiPolygon而不是Point。这是我的序列化程序:

代码语言:javascript
复制
class AreaSerializer(gis_serializers.GeoFeatureModelSerializer):

    class Meta:
        model = Area
        geo_field = "geom"

也许不需要在geo_field中引用模型,而是直接说明字段?

以下是我的序列化程序的代码库,如果这可能有帮助的话:

https://github.com/kelvinn/alerted-us-web/blob/master/apps/alertdb/serializers.py

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28142981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档