Author: jezdez Date: 2011-07-03 10:56:33 -0700 (Sun, 03 Jul 2011) New Revision: 16497
Modified: django/trunk/django/contrib/admin/options.py django/trunk/tests/regressiontests/modeladmin/tests.py Log: Fixed #15820 -- Fixed the use of the InlineAdmin's get_formset method by actually passing in the obj. Thanks, Julien Phalip. Modified: django/trunk/django/contrib/admin/options.py =================================================================== --- django/trunk/django/contrib/admin/options.py 2011-07-03 17:56:25 UTC (rev 16496) +++ django/trunk/django/contrib/admin/options.py 2011-07-03 17:56:33 UTC (rev 16497) @@ -1360,7 +1360,7 @@ def get_fieldsets(self, request, obj=None): if self.declared_fieldsets: return self.declared_fieldsets - form = self.get_formset(request).form + form = self.get_formset(request, obj).form fields = form.base_fields.keys() + list(self.get_readonly_fields(request, obj)) return [(None, {'fields': fields})] Modified: django/trunk/tests/regressiontests/modeladmin/tests.py =================================================================== --- django/trunk/tests/regressiontests/modeladmin/tests.py 2011-07-03 17:56:25 UTC (rev 16496) +++ django/trunk/tests/regressiontests/modeladmin/tests.py 2011-07-03 17:56:33 UTC (rev 16497) @@ -237,6 +237,38 @@ '<option value="%d">The Doors</option>\n' '</select>' % self.band.id) + def test_regression_for_ticket_15820(self): + """ + Ensure that `obj` is passed from `InlineModelAdmin.get_fieldsets()` to + `InlineModelAdmin.get_formset()`. + """ + class CustomConcertForm(forms.ModelForm): + + class Meta: + model = Concert + fields = ['day'] + + class ConcertInline(TabularInline): + model = Concert + fk_name = 'main_band' + + def get_formset(self, request, obj=None, **kwargs): + if obj: + kwargs['form'] = CustomConcertForm + return super(ConcertInline, self).get_formset(request, obj, **kwargs) + + class BandAdmin(ModelAdmin): + inlines = [ + ConcertInline + ] + + concert = Concert.objects.create(main_band=self.band, opening_band=self.band, day=1) + ma = BandAdmin(Band, self.site) + fieldsets = list(ma.inline_instances[0].get_fieldsets(request)) + self.assertEqual(fieldsets[0][1]['fields'], ['main_band', 'opening_band', 'day', 'transport']) + fieldsets = list(ma.inline_instances[0].get_fieldsets(request, ma.inline_instances[0].model)) + self.assertEqual(fieldsets[0][1]['fields'], ['day']) + # radio_fields behavior ########################################### def test_default_foreign_key_widget(self): -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.