Fixed #15820 -- Fixed the use of the InlineAdmin's get_formset method by actually passing in the obj. Thanks, Julien Phalip.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16497 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
43cb78fafd
commit
f9fe112f2d
|
@ -1360,7 +1360,7 @@ class InlineModelAdmin(BaseModelAdmin):
|
||||||
def get_fieldsets(self, request, obj=None):
|
def get_fieldsets(self, request, obj=None):
|
||||||
if self.declared_fieldsets:
|
if self.declared_fieldsets:
|
||||||
return 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))
|
fields = form.base_fields.keys() + list(self.get_readonly_fields(request, obj))
|
||||||
return [(None, {'fields': fields})]
|
return [(None, {'fields': fields})]
|
||||||
|
|
||||||
|
|
|
@ -237,6 +237,38 @@ class ModelAdminTests(TestCase):
|
||||||
'<option value="%d">The Doors</option>\n'
|
'<option value="%d">The Doors</option>\n'
|
||||||
'</select>' % self.band.id)
|
'</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 ###########################################
|
# radio_fields behavior ###########################################
|
||||||
|
|
||||||
def test_default_foreign_key_widget(self):
|
def test_default_foreign_key_widget(self):
|
||||||
|
|
Loading…
Reference in New Issue