Author: jbronn
Date: 2009-06-29 11:31:21 -0500 (Mon, 29 Jun 2009)
New Revision: 11123

Modified:
   django/trunk/django/contrib/gis/db/models/sql/query.py
   django/trunk/django/contrib/gis/tests/relatedapp/models.py
   django/trunk/django/contrib/gis/tests/relatedapp/tests.py
Log:
Fixed #11381 -- `GeoManager` + `select_related` + nullable `ForeignKey` now 
works correctly.  Thanks, bretthoerner for ticket and dgouldin for initial 
patch.


Modified: django/trunk/django/contrib/gis/db/models/sql/query.py
===================================================================
--- django/trunk/django/contrib/gis/db/models/sql/query.py      2009-06-29 
14:23:28 UTC (rev 11122)
+++ django/trunk/django/contrib/gis/db/models/sql/query.py      2009-06-29 
16:31:21 UTC (rev 11123)
@@ -225,7 +225,7 @@
                 values.append(self.convert_values(value, field))
         else:
             values.extend(row[index_start:])
-        return values
+        return tuple(values)
 
     def convert_values(self, value, field):
         """

Modified: django/trunk/django/contrib/gis/tests/relatedapp/models.py
===================================================================
--- django/trunk/django/contrib/gis/tests/relatedapp/models.py  2009-06-29 
14:23:28 UTC (rev 11122)
+++ django/trunk/django/contrib/gis/tests/relatedapp/models.py  2009-06-29 
16:31:21 UTC (rev 11123)
@@ -40,5 +40,5 @@
 
 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()

Modified: django/trunk/django/contrib/gis/tests/relatedapp/tests.py
===================================================================
--- django/trunk/django/contrib/gis/tests/relatedapp/tests.py   2009-06-29 
14:23:28 UTC (rev 11122)
+++ django/trunk/django/contrib/gis/tests/relatedapp/tests.py   2009-06-29 
16:31:21 UTC (rev 11123)
@@ -257,6 +257,13 @@
         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():


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to