Author: brosner
Date: 2008-10-28 15:01:03 -0500 (Tue, 28 Oct 2008)
New Revision: 9293

Modified:
   django/trunk/django/forms/models.py
   django/trunk/tests/modeltests/model_formsets/models.py
Log:
Fixed #9462 -- Set the instance in an inline formset correctly so that None 
does not get passed through to the queryset. Thanks tobias and copelco for the 
ticket.

Modified: django/trunk/django/forms/models.py
===================================================================
--- django/trunk/django/forms/models.py 2008-10-28 19:04:59 UTC (rev 9292)
+++ django/trunk/django/forms/models.py 2008-10-28 20:01:03 UTC (rev 9293)
@@ -446,7 +446,10 @@
     def __init__(self, data=None, files=None, instance=None,
                  save_as_new=False, prefix=None):
         from django.db.models.fields.related import RelatedObject
-        self.instance = instance
+        if instance is None:
+            self.instance = self.model()
+        else:
+            self.instance = instance
         self.save_as_new = save_as_new
         # is there a better way to get the object descriptor?
         self.rel_name = RelatedObject(self.fk.rel.to, self.model, 
self.fk).get_accessor_name()

Modified: django/trunk/tests/modeltests/model_formsets/models.py
===================================================================
--- django/trunk/tests/modeltests/model_formsets/models.py      2008-10-28 
19:04:59 UTC (rev 9292)
+++ django/trunk/tests/modeltests/model_formsets/models.py      2008-10-28 
20:01:03 UTC (rev 9293)
@@ -107,6 +107,17 @@
     date_joined = models.DateTimeField(default=datetime.datetime.now)
     karma = models.IntegerField()
 
+# models for testing a null=True fk to a parent
+class Team(models.Model):
+    name = models.CharField(max_length=100)
+
+class Player(models.Model):
+    team = models.ForeignKey(Team, null=True)
+    name = models.CharField(max_length=100)
+    
+    def __unicode__(self):
+        return self.name
+
 __test__ = {'API_TESTS': """
 
 >>> from datetime import date
@@ -701,4 +712,19 @@
 >>> formset.is_valid()
 True
 
+# inlineformset_factory tests with fk having null=True. see #9462.
+# create some data that will exbit the issue
+>>> team = Team.objects.create(name=u"Red Vipers")
+>>> Player(name="Timmy").save()
+>>> Player(name="Bobby", team=team).save()
+
+>>> PlayerInlineFormSet = inlineformset_factory(Team, Player)
+>>> formset = PlayerInlineFormSet()
+>>> formset.get_queryset()
+[]
+
+>>> formset = PlayerInlineFormSet(instance=team)
+>>> formset.get_queryset()
+[<Player: Bobby>]
+
 """}


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

Reply via email to