updateOrCreateFromFields is made to call updateOrCreateFromKeyName.
updateOrCreateFromFields called self._model.get_or_insert which only creates
new entities but doesn't update the properties if the entity already exists.
So updateOrCreateFromFields is now made to call updateOrCreateFromKeyName
which actually updates the entity properties if entity already exists.
Reviewed by: Lennard de Rijk
def add_postgis_srs(srs):
"""
This function takes a GDAL SpatialReference system and adds its
information to the PostGIS `spatial_ref_sys` table -- enabling
spatial transformations with PostGIS. This is handy for adding
spatial reference systems not included by default with PostGIS.
For example, the following adds the so-called "Google Maps Mercator
Projection" (available in GDAL 1.5):
>>> add_postgis_srs(SpatialReference(900913))
Note: By default, the `auth_name` is set to 'EPSG' -- this should
probably be changed.
"""
from django.contrib.gis.models import SpatialRefSys
from django.contrib.gis.gdal import SpatialReference
if not isinstance(srs, SpatialReference):
srs = SpatialReference(srs)
if srs.srid is None:
raise Exception('Spatial reference requires an SRID to be compatible with PostGIS.')
# Creating the spatial_ref_sys model.
sr, created = SpatialRefSys.objects.get_or_create(
srid=srs.srid, auth_name='EPSG', auth_srid=srs.srid,
srtext=srs.wkt, proj4text=srs.proj4)