Saqib Ali
Saqib Ali

Reputation: 12643

How to assign to a Django PointField model attribute?

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.

Upvotes: 22

Views: 29226

Answers (3)

Joydeep Baidya
Joydeep Baidya

Reputation: 11

Try Using

from django.contrib.gis.db import models

instead of
from django.db import models

Upvotes: 1

Jordi
Jordi

Reputation: 944

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/

Upvotes: 27

siolag161
siolag161

Reputation: 117

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

Upvotes: 11

Related Questions