diff options
| author | Joseph Kocherhans <joseph@jkocherhans.com> | 2010-01-21 01:40:21 +0000 |
|---|---|---|
| committer | Joseph Kocherhans <joseph@jkocherhans.com> | 2010-01-21 01:40:21 +0000 |
| commit | 856a39e841080abc34e8ae3bb2b20f780c33762d (patch) | |
| tree | 7088b4de5deaea14d201a1f43e3eca6cacfb8a26 /django | |
| parent | 63c5e6621aac1cdf4d02d0b99266251cd1643c26 (diff) | |
Fixed #12577. Reverted some changes from [12098] since [12206] made them unneccessary. Also, added a test for using generic inlines with unique_together. Thanks for the report, Raffaele Salmaso.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12268 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/contenttypes/generic.py | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/django/contrib/contenttypes/generic.py b/django/contrib/contenttypes/generic.py index 0d542a4a4e..2a9f4d3ac6 100644 --- a/django/contrib/contenttypes/generic.py +++ b/django/contrib/contenttypes/generic.py @@ -297,11 +297,7 @@ class BaseGenericInlineFormSet(BaseModelFormSet): # Avoid a circular import. from django.contrib.contenttypes.models import ContentType opts = self.model._meta - if instance is None: - self.instance = self.model() - else: - self.instance = instance - self.save_as_new = save_as_new + self.instance = instance self.rel_name = '-'.join(( opts.app_label, opts.object_name.lower(), self.ct_field.name, self.ct_fk_field.name, @@ -328,19 +324,15 @@ class BaseGenericInlineFormSet(BaseModelFormSet): )) get_default_prefix = classmethod(get_default_prefix) - def _construct_form(self, i, **kwargs): + def save_new(self, form, commit=True): # Avoid a circular import. from django.contrib.contenttypes.models import ContentType - form = super(BaseGenericInlineFormSet, self)._construct_form(i, **kwargs) - if self.save_as_new: - # Remove the key from the form's data, we are only creating new instances. - form.data[form.add_prefix(self.ct_fk_field.name)] = None - form.data[form.add_prefix(self.ct_field.name)] = None - - # Set the GenericForeignKey value here so that the form can do its validation. - setattr(form.instance, self.ct_fk_field.attname, self.instance.pk) - setattr(form.instance, self.ct_field.attname, ContentType.objects.get_for_model(self.instance).pk) - return form + kwargs = { + self.ct_field.get_attname(): ContentType.objects.get_for_model(self.instance).pk, + self.ct_fk_field.get_attname(): self.instance.pk, + } + new_obj = self.model(**kwargs) + return save_instance(form, new_obj, commit=commit) def generic_inlineformset_factory(model, form=ModelForm, formset=BaseGenericInlineFormSet, |
