如何给Django的PointField模型属性赋值?

20 投票
3 回答
27992 浏览
提问于 2025-04-18 14:31

你好,我有一个Django模型,内容如下:

class Address(models.Model):
    geoCoords = models.PointField(null=True, blank=True,)

现在我创建了这个模型的一个实例:

A = Address()

我该如何将A的geoCoord字段的坐标设置为(5.3, 6.2)呢?我找不到任何关于如何这样给点字段赋值的例子。这真是个简单得不能再简单的问题。实际上,我想赋值给A.geoCoord的坐标是来自pygeocoder的,它是一个包含两个浮点数的元组。

关于Django的PointFields的文档基本上是不存在的

3 个回答

0

试着使用

from django.contrib.gis.db import models

而不是
from django.db import models

11

你可以使用:

from django.contrib.gis.geos import GEOSGeometry
A.geoCoords = GEOSGeometry('POINT(LON LAT)', srid=4326) # 

其中,latlon 分别代表 纬度经度,而 srid 是可选的,它表示 空间参考系统标识符

你可以在这里查看更多关于如何绘制不同几何图形的信息:https://docs.djangoproject.com/en/dev/ref/contrib/gis/geos/#what-is-geos

28

在更新版的Django中,你可以这样做:

from django.contrib.gis.geos import Point
pnt = Point(1, 1)

有很多例子可以在这个链接找到:https://docs.djangoproject.com/en/1.11/ref/contrib/gis/geos/

撰写回答