Tengo un sitio que está funcionando en nuestro servidor de ensayo, pero después de copiarlo al servidor en vivo estoy recibiendo el siguiente error al intentar realizar una llamada a distance() (código reducido al mínimo)
>>> Buddy.objects.all().distance(pnt[0].geom, field_name='postalcode__geom')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/query.py", line 100, in distance
return self._distance_attribute('distance', geom, **kwargs)
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/query.py", line 582, in _distance_attribute
geodetic = geo_field.geodetic(connection)
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/fields.py", line 131, in geodetic
return self.units_name(connection) in self.geodetic_units
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/fields.py", line 122, in units_name
self._get_srid_info(connection)
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/fields.py", line 108, in _get_srid_info
self._units, self._units_name, self._spheroid = get_srid_info(self.srid, connection)
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/models/fields.py", line 35, in get_srid_info
units, units_name = sr.units
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/backends/base.py", line 281, in units
return (self.linear_units, self.linear_name)
File "/home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/backends/base.py", line 253, in linear_units
return m.group('unit')
AttributeError: 'NoneType' object has no attribute 'group'
>>> pnt[0].geom
<Point object at 0x1fb0370>
No he podido encontrar ninguna información en otro lugar sobre este error. Cualquier ayuda en cuanto a lo que podría estar causando esto sería muy bienvenida.
EDITAR
Sin tener ni idea de lo que estoy haciendo, me ha salido posiblemente el mejor parche del mundo /s
--- /home/buddyup/base.py 2012-01-18 22:17:04.000000000 -0500
+++ /home/buddyup/sites/buddyup/lib/python2.6/site-packages/django/contrib/gis/db/backends/base.py 2012-01-18 22:16:09.000000000 -0500
@@ -239,7 +239,8 @@
return None
else:
m = self.units_regex.match(self.wkt)
- return m.group('unit_name')
+ return 'meter'
+ #return m.group('unit_name')
@property
def linear_units(self):
@@ -250,7 +251,8 @@
return None
else:
m = self.units_regex.match(self.wkt)
- return m.group('unit')
+ return 'm'
+ #return m.group('unit')
@property
def angular_name(self):
No tengo ni idea de por qué no puede encontrar las unidades o el nombre de las unidades, pero por ahora me funciona. Me encantaría saber cuál podría ser el problema real y encontrar una solución válida.
EDITAR 2
yum install gdal
Después de hablar con pizzaparty en el canal de IRC #django señaló que gdal instalado debería detener a Django tratando de obtener las unidades de un objeto Point que no tiene. Esa parece ser una solución mucho mejor.