Author: brosner
Date: 2008-10-28 15:03:56 -0500 (Tue, 28 Oct 2008)
New Revision: 9294
Modified:
django/branches/releases/1.0.X/django/forms/models.py
django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
Log:
[0.5.X] 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.
Backport of r9293 from trunk.
Modified: django/branches/releases/1.0.X/django/forms/models.py
===================================================================
--- django/branches/releases/1.0.X/django/forms/models.py 2008-10-28
20:01:03 UTC (rev 9293)
+++ django/branches/releases/1.0.X/django/forms/models.py 2008-10-28
20:03:56 UTC (rev 9294)
@@ -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/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
===================================================================
--- django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
2008-10-28 20:01:03 UTC (rev 9293)
+++ django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
2008-10-28 20:03:56 UTC (rev 9294)
@@ -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
-~----------~----~----~----~------~----~------~--~---