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

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 被呈现为字符串而不是坐标对:

所以它给了我:
"location": "POINT (-1.909 53.7094)"

代替:
  "point": {
        "type": "Point",
        "coordinates": [-123.0208, 44.0464],
   },

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

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

最佳答案

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

Django Rest Framework - Get related model field in serializer

我在 EventLocation 上创建了一个序列化器,并在 EventSerializer 中将其定义为“位置”,该点作为 geojson 几何体输出。

关于python - django-rest-framework-gis 相关领域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28142981/

10-12 16:48