19

Hi I have a Django Model as follows:

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

Now I create an instance of this model:

A = Address()

How can I set the coordinates of A's geoCoord field to (5.3, 6.2)? I can't find any example of where a point field is assigned to in this way. It's such a stupidly simple question. Actually, the coordinates I would like to assign to A.geoCord are from pygeocoder. It is a 2-item tuple of floats.

The documentation on Django PointFields is basically non-existant.

Saqib Ali
  • 11,931
  • 41
  • 133
  • 272

3 Answers3

27

In newer versions of Django you can:

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

Plenty of examples available in https://docs.djangoproject.com/en/1.11/ref/contrib/gis/geos/

Jordi
  • 886
  • 11
  • 11
11

You can use:

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

where lat and lon mean latitude and longitude, respectively and srid is optional, indicating the Spatial Reference System Identifier.

You can see more on how to draw different geometries here: https://docs.djangoproject.com/en/dev/ref/contrib/gis/geos/#what-is-geos

Casey Kinsey
  • 1,451
  • 9
  • 16
siolag161
  • 117
  • 2
  • 4
0

Try Using

from django.contrib.gis.db import models

instead of
from django.db import models