Opened 16 years ago

Last modified 15 years ago

#9364 closed

Spatial queries don't work on inherited geometry fields — at Version 1

Reported by: jbronn Owned by: jbronn
Component: GIS Version: 1.0
Severity: Keywords: gis inheritance
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: yes Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by jbronn)

In the following models TexasCity inherits from City:

from django.contrib.gis.db import models

class City(models.Model):
    name = models.CharField(max_length=30)
    point = models.PointField()
    objects = models.GeoManager()

    def __unicode__(self): return self.name

class TexasCity(City):
    tx_county = models.CharField(max_length=30)
    objects = models.GeoManager() # Why does this need to be explicit?

    def __unicode__(self):
        return '%s (%s County)' % (self.name, self.tx_county)

When performing the following query:

In [4]: qs = TexasCity.objects.distance(pnt)

This SQL is generated, which is incorrect (there is no "point" column on the TexasCity model):

In [23]: qs.query.as_sql()
Out[23]: 
(u'SELECT (ST_distance_sphere("tz_texascity"."point",%s)) AS "distance", "tz_city"."id", "tz_city"."name", "tz_city"."point", "tz_texascity"."city_ptr_id", "tz_texascity"."tx_county" FROM "tz_texascity" INNER JOIN "tz_city" ON ("tz_texascity"."city_ptr_id" = "tz_city"."id")',
 (<django.contrib.gis.db.backend.postgis.adaptor.PostGISAdaptor object at 0x319b610>,))

Change History (1)

comment:1 by jbronn, 16 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top