Author: brosner
Date: 2008-11-01 17:26:44 -0500 (Sat, 01 Nov 2008)
New Revision: 9327
Modified:
django/branches/releases/1.0.X/django/forms/models.py
django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
Log:
[1.0.X] Fixed #9494 -- Ensure the foreign key in an inline formset is always
present on the forms. Thanks Fugazi for the report.
Backport of r9326 from trunk
Modified: django/branches/releases/1.0.X/django/forms/models.py
===================================================================
--- django/branches/releases/1.0.X/django/forms/models.py 2008-11-01
22:25:41 UTC (rev 9326)
+++ django/branches/releases/1.0.X/django/forms/models.py 2008-11-01
22:26:44 UTC (rev 9327)
@@ -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/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
===================================================================
--- django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
2008-11-01 22:25:41 UTC (rev 9326)
+++ django/branches/releases/1.0.X/tests/modeltests/model_formsets/models.py
2008-11-01 22:26:44 UTC (rev 9327)
@@ -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
-~----------~----~----~----~------~----~------~--~---