Author: brosner
Date: 2008-11-01 17:25:41 -0500 (Sat, 01 Nov 2008)
New Revision: 9326

Modified:
   django/trunk/django/forms/models.py
   django/trunk/tests/modeltests/model_formsets/models.py
Log:
Fixed #9494 -- Ensure the foreign key in an inline formset is always present on 
the forms. Thanks Fugazi for the report.

Modified: django/trunk/django/forms/models.py
===================================================================
--- django/trunk/django/forms/models.py 2008-11-01 21:07:02 UTC (rev 9325)
+++ django/trunk/django/forms/models.py 2008-11-01 22:25:41 UTC (rev 9326)
@@ -539,6 +539,13 @@
     # enforce a max_num=1 when the foreign key to the parent model is unique.
     if fk.unique:
         max_num = 1
+    if fields is not None:
+        fields = list(fields)
+        fields.append(fk.name)
+    else:
+        # get all the fields for this model that will be generated.
+        fields = fields_for_model(model, fields, exclude, 
formfield_callback).keys()
+        fields.append(fk.name)
     kwargs = {
         'form': form,
         'formfield_callback': formfield_callback,

Modified: django/trunk/tests/modeltests/model_formsets/models.py
===================================================================
--- django/trunk/tests/modeltests/model_formsets/models.py      2008-11-01 
21:07:02 UTC (rev 9325)
+++ django/trunk/tests/modeltests/model_formsets/models.py      2008-11-01 
22:25:41 UTC (rev 9326)
@@ -696,6 +696,21 @@
 >>> formset.errors
 [{'__all__': [u'Revision with this Repository and Revision already exists.']}]
 
+# unique_together with inlineformset_factory with overridden form fields
+# Also see #9494
+
+>>> FormSet = inlineformset_factory(Repository, Revision, 
fields=('revision',), extra=1)
+>>> data = {
+...     'revision_set-TOTAL_FORMS': '1',
+...     'revision_set-INITIAL_FORMS': '0',
+...     'revision_set-0-repository': repository.pk,
+...     'revision_set-0-revision': '146239817507f148d448db38840db7c3cbf47c76',
+...     'revision_set-0-DELETE': '',
+... }
+>>> formset = FormSet(data, instance=repository)
+>>> formset.is_valid()
+False
+
 # Use of callable defaults (see bug #7975).
 
 >>> person = Person.objects.create(name='Ringo')


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