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 -~----------~----~----~----~------~----~------~--~---