Index: contrib/gis/db/models/sql/query.py
===================================================================
--- contrib/gis/db/models/sql/query.py	(revision 10319)
+++ contrib/gis/db/models/sql/query.py	(working copy)
@@ -67,7 +67,7 @@
             # This loop customized for GeoQuery.
             for col, field in izip(self.select, self.select_fields):
                 if isinstance(col, (list, tuple)):
-                    r = self.get_field_select(field, col[0])
+                    r = self.get_field_select(field, col[0], col[1])
                     if with_aliases:
                         if col[1] in col_aliases:
                             c_alias = 'Col%d' % len(col_aliases)
@@ -105,7 +105,7 @@
 
         # This loop customized for GeoQuery.
         for (table, col), field in izip(self.related_select_cols, self.related_select_fields):
-            r = self.get_field_select(field, table)
+            r = self.get_field_select(field, table, col)
             if with_aliases and col in col_aliases:
                 c_alias = 'Col%d' % len(col_aliases)
                 result.append('%s AS %s' % (r, c_alias))
@@ -239,7 +239,7 @@
             sel_fmt = sel_fmt % self.custom_select[alias]
         return sel_fmt
 
-    def get_field_select(self, fld, alias=None):
+    def get_field_select(self, fld, alias=None, column=None):
         """
         Returns the SELECT SQL string for the given field.  Figures out
         if any custom selection SQL is needed for the column  The `alias`
@@ -251,7 +251,7 @@
         if fld in self.custom_select:
             field_sel = sel_fmt % self.custom_select[fld]
         else:
-            field_sel = sel_fmt % self._field_column(fld, alias)
+            field_sel = sel_fmt % self._field_column(fld, alias, column)
         return field_sel
 
     def get_select_format(self, fld):
@@ -281,7 +281,7 @@
         return sel_fmt
 
     # Private API utilities, subject to change.
-    def _field_column(self, field, table_alias=None):
+    def _field_column(self, field, table_alias=None, column=None):
         """
         Helper function that returns the database column for the given field.
         The table and column are returned (quoted) in the proper format, e.g.,
@@ -289,9 +289,10 @@
         database table associated with the model of this `GeoQuery` will be
         used.
         """
+        column = column or field.column
         if table_alias is None: table_alias = self.model._meta.db_table
         return "%s.%s" % (self.quote_name_unless_alias(table_alias),
-                          self.connection.ops.quote_name(field.column))
+                          self.connection.ops.quote_name(column))
 
     def _geo_field(self, field_name=None):
         """
Index: contrib/gis/tests/geoapp/tests.py
===================================================================
--- contrib/gis/tests/geoapp/tests.py	(revision 10319)
+++ contrib/gis/tests/geoapp/tests.py	(working copy)
@@ -4,7 +4,7 @@
 from django.contrib.gis.geos import *
 from django.contrib.gis.measure import Distance
 from django.contrib.gis.tests.utils import no_oracle, no_postgis, no_spatialite
-from models import Country, City, PennsylvaniaCity, State
+from models import Country, City, PennsylvaniaCity, State, Child
 
 if not SpatialBackend.spatialite:
     from models import Feature, MinusOneSRID
@@ -620,6 +620,10 @@
 
         self.assertEqual(1, qs.count())
         for pc in qs: self.assertEqual(32128, pc.point.srid)
+    
+    def test27_values(self):
+        sql = Child.objects.values('parent__id').query.as_sql()[0]
+        self.assertEqual('SELECT "geoapp_child"."parent_id" FROM "geoapp_child"', sql)
 
 from test_feeds import GeoFeedTest
 from test_regress import GeoRegressionTests
Index: contrib/gis/tests/geoapp/models.py
===================================================================
--- contrib/gis/tests/geoapp/models.py	(revision 10319)
+++ contrib/gis/tests/geoapp/models.py	(working copy)
@@ -37,3 +37,12 @@
     class MinusOneSRID(models.Model):
         geom = models.PointField(srid=-1) # Minus one SRID.
         objects = models.GeoManager()
+
+class Parent(models.Model):
+    name = models.CharField(max_length=30)
+    objects = models.GeoManager()
+
+class Child(models.Model):
+    name = models.CharField(max_length=30)
+    parent = models.ForeignKey(Parent, related_name='children')
+    objects = models.GeoManager()
\ No newline at end of file
