summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Bronn <jbronn@gmail.com>2009-06-29 16:31:21 +0000
committerJustin Bronn <jbronn@gmail.com>2009-06-29 16:31:21 +0000
commitfdcc0c774a9295f5d0fa3a1edd34e4f7e41476d5 (patch)
tree5452bd437a66575dc791cbc51cdef2be9df5eea8
parent735309341e24d53d5af41799a31aa964f424190c (diff)
Fixed #11381 -- `GeoManager` + `select_related` + nullable `ForeignKey` now works correctly. Thanks, bretthoerner for ticket and dgouldin for initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@11123 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/gis/db/models/sql/query.py2
-rw-r--r--django/contrib/gis/tests/relatedapp/models.py2
-rw-r--r--django/contrib/gis/tests/relatedapp/tests.py7
3 files changed, 9 insertions, 2 deletions
diff --git a/django/contrib/gis/db/models/sql/query.py b/django/contrib/gis/db/models/sql/query.py
index cf1ccf6483..5df15a88b1 100644
--- a/django/contrib/gis/db/models/sql/query.py
+++ b/django/contrib/gis/db/models/sql/query.py
@@ -225,7 +225,7 @@ class GeoQuery(sql.Query):
values.append(self.convert_values(value, field))
else:
values.extend(row[index_start:])
- return values
+ return tuple(values)
def convert_values(self, value, field):
"""
diff --git a/django/contrib/gis/tests/relatedapp/models.py b/django/contrib/gis/tests/relatedapp/models.py
index 1125d7fb85..726f9826c0 100644
--- a/django/contrib/gis/tests/relatedapp/models.py
+++ b/django/contrib/gis/tests/relatedapp/models.py
@@ -40,5 +40,5 @@ class Author(models.Model):
class Book(models.Model):
title = models.CharField(max_length=100)
- author = models.ForeignKey(Author, related_name='books')
+ author = models.ForeignKey(Author, related_name='books', null=True)
objects = models.GeoManager()
diff --git a/django/contrib/gis/tests/relatedapp/tests.py b/django/contrib/gis/tests/relatedapp/tests.py
index 8c4f83b15a..502a3c0be9 100644
--- a/django/contrib/gis/tests/relatedapp/tests.py
+++ b/django/contrib/gis/tests/relatedapp/tests.py
@@ -257,6 +257,13 @@ class RelatedGeoModelTest(unittest.TestCase):
self.assertEqual(1, len(qs))
self.assertEqual(3, qs[0].num_books)
+ def test13_select_related_null_fk(self):
+ "Testing `select_related` on a nullable ForeignKey via `GeoManager`. See #11381."
+ no_author = Book.objects.create(title='Without Author')
+ b = Book.objects.select_related('author').get(title='Without Author')
+ # Should be `None`, and not a 'dummy' model.
+ self.assertEqual(None, b.author)
+
# TODO: Related tests for KML, GML, and distance lookups.
def suite():