Django

Code

Changeset 8396

Show
Ignore:
Timestamp:
08/15/08 16:57:36 (11 months ago)
Author:
brosner
Message:

Fixed #8341 -- Allow simpler subclassing of ModelAdmin? and InlineModelAdmin? when overriding get_form and get_formset and needing to pass keyword argument on to the factory functions. Thanks ciantic for the report.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/contrib/admin/options.py

    r8392 r8396  
    335335        return [(None, {'fields': form.base_fields.keys()})] 
    336336 
    337     def get_form(self, request, obj=None): 
     337    def get_form(self, request, obj=None, **kwargs): 
    338338        """ 
    339339        Returns a Form class for use in the admin add view. This is used by 
     
    344344        else: 
    345345            fields = None 
    346         return modelform_factory(self.model, form=self.form, fields=fields, formfield_callback=self.formfield_for_dbfield) 
     346        defaults = { 
     347            "form": self.form, 
     348            "fields": fields, 
     349            "formfield_callback": self.formfield_for_dbfield, 
     350        } 
     351        defaults.update(kwargs) 
     352        return modelform_factory(self.model, **defaults) 
    347353 
    348354    def get_formsets(self, request, obj=None): 
     
    834840    media = property(_media) 
    835841 
    836     def get_formset(self, request, obj=None): 
     842    def get_formset(self, request, obj=None, **kwargs): 
    837843        """Returns a BaseInlineFormSet class for use in admin add/change views.""" 
    838844        if self.declared_fieldsets: 
     
    840846        else: 
    841847            fields = None 
    842         return inlineformset_factory(self.parent_model, self.model, 
    843             form=self.form, formset=self.formset, fk_name=self.fk_name, 
    844             fields=fields, formfield_callback=self.formfield_for_dbfield, 
    845             extra=self.extra, max_num=self.max_num) 
     848        defaults = { 
     849            "form": self.form, 
     850            "formset": self.formset, 
     851            "fk_name": self.fk_name, 
     852            "fields": fields, 
     853            "formfield_callback": self.formfield_for_dbfield, 
     854            "extra": self.extra, 
     855            "max_num": self.max_num, 
     856        } 
     857        defaults.update(kwargs) 
     858        return inlineformset_factory(self.parent_model, self.model, **defaults) 
    846859 
    847860    def get_fieldsets(self, request, obj=None):