Django

Code

Ticket #4667: 4667-added-custom-formset.diff

File 4667-added-custom-formset.diff, 3.9 kB (added by Honza_Kral, 10 months ago)

new two-part patch for django @6657 (first part)

  • a/django/contrib/admin/options.py

    old new  
    11from django import oldforms, template 
    22from django import newforms as forms 
    33from django.newforms.formsets import all_valid 
    4 from django.contrib.contenttypes.models import ContentType 
    54from django.contrib.admin import widgets 
    65from django.contrib.admin.util import get_deleted_objects 
    76from django.core.exceptions import ImproperlyConfigured, PermissionDenied 
     
    451450            return HttpResponseRedirect("../") 
    452451 
    453452    def render_change_form(self, model, context, add=False, change=False, form_url=''): 
     453        from django.contrib.contenttypes.models import ContentType 
    454454        opts = model._meta 
    455455        app_label = opts.app_label 
    456456        ordered_objects = opts.get_ordered_objects() 
     
    721721    template = None 
    722722    verbose_name = None 
    723723    verbose_name_plural = None 
     724    formset = None 
    724725 
    725726    def __init__(self, parent_model, admin_site): 
    726727        self.admin_site = admin_site 
     
    738739            fields = flatten_fieldsets(self.declared_fieldsets) 
    739740        else: 
    740741            fields = None 
    741         return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra
     742        return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra, formset=self.formset
    742743 
    743744    def formset_change(self, request, obj): 
    744745        """Returns an InlineFormSet class for use in admin change views.""" 
     
    746747            fields = flatten_fieldsets(self.declared_fieldsets) 
    747748        else: 
    748749            fields = None 
    749         return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra
     750        return forms.inline_formset(self.parent_model, self.model, fk_name=self.fk_name, fields=fields, formfield_callback=self.formfield_for_dbfield, extra=self.extra, formset=self.formset
    750751 
    751752    def fieldsets_add(self, request): 
    752753        if self.declared_fieldsets: 
  • a/django/newforms/models.py

    old new  
    408408            raise Exception("%s has more than 1 ForeignKey to %s" % (model, parent_model)) 
    409409    return fk 
    410410 
    411 def inline_formset(parent_model, model, fk_name=None, fields=None, extra=3, orderable=False, deletable=True, formfield_callback=lambda f: f.formfield()): 
     411def inline_formset(parent_model, model, fk_name=None, fields=None, extra=3, orderable=False, deletable=True, formfield_callback=lambda f: f.formfield(), formset=None): 
    412412    """ 
    413413    Returns an ``InlineFormset`` for the given kwargs. 
    414414 
     
    417417    """ 
    418418    fk = get_foreign_key(parent_model, model, fk_name=fk_name) 
    419419    # let the formset handle object deletion by default 
    420     FormSet = formset_for_model(model, formset=InlineFormset, fields=fields, 
     420    FormSet = formset_for_model(model, formset=formset or InlineFormset, fields=fields, 
    421421                                formfield_callback=formfield_callback, 
    422422                                extra=extra, orderable=orderable, 
    423423                                deletable=deletable)