Ticket #9025: django_nested_inlines.diff
| File django_nested_inlines.diff, 4.4 kB (added by vo.sinh@gmail.com, 1 year ago) |
|---|
-
django/contrib/admin/options.py
old new 279 279 def get_formsets(self, request, obj=None): 280 280 for inline in self.inline_instances: 281 281 yield inline.get_formset(request, obj) 282 282 for nested in inline.inline_instances: 283 yield nested.get_formset(request, obj) 284 for subnested in nested.inline_instances: 285 yield subnested.get_formset(request, obj) 286 283 287 def log_addition(self, request, object): 284 288 """ 285 289 Log that an object has been successfully added. … … 603 607 adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj), self.prepopulated_fields) 604 608 media = self.media + adminForm.media 605 609 610 nested_inlines = [] 611 subnested_inlines = [] 612 for inline in self.inline_instances: 613 for nested in inline.inline_instances: 614 nested_inlines.append(nested) 615 for subnested in nested.inline_instances: 616 subnested_inlines.append(subnested) 617 all_inlines = self.inline_instances + nested_inlines + subnested_inlines 618 606 619 inline_admin_formsets = [] 607 for inline, formset in zip(self.inline_instances, formsets): 608 fieldsets = list(inline.get_fieldsets(request, obj)) 609 inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets) 610 inline_admin_formsets.append(inline_admin_formset) 611 media = media + inline_admin_formset.media 620 for formset in formsets: 621 for inline in all_inlines: 622 if inline.model == formset.model: 623 fieldsets = list(inline.get_fieldsets(request, obj)) 624 inline_admin_formset = helpers.InlineAdminFormSet(inline, formset, fieldsets) 625 inline_admin_formsets.append(inline_admin_formset) 626 media = media + inline_admin_formset.media 627 break 612 628 613 629 context = { 614 630 'title': _('Change %s') % force_unicode(opts.verbose_name), … … 759 775 template = None 760 776 verbose_name = None 761 777 verbose_name_plural = None 778 inlines = [] 762 779 763 780 def __init__(self, parent_model, admin_site): 764 781 self.admin_site = admin_site … … 769 786 self.verbose_name = self.model._meta.verbose_name 770 787 if self.verbose_name_plural is None: 771 788 self.verbose_name_plural = self.model._meta.verbose_name_plural 772 789 self.inline_instances = [] 790 for inline_class in self.inlines: 791 inline_instance = inline_class(self.model, self.admin_site) 792 self.inline_instances.append(inline_instance) 793 773 794 def _media(self): 774 795 from django.conf import settings 775 796 js = [] -
django/contrib/admin/validation.py
old new 137 137 raise ImproperlyConfigured("'%s.formset' does not inherit from " 138 138 "BaseModelFormSet." % cls.__name__) 139 139 140 # nested inlines = [] 141 if hasattr(cls, 'inlines'): 142 check_isseq(cls, 'inlines', cls.inlines) 143 for idx, inline in enumerate(cls.inlines): 144 if not issubclass(inline, BaseModelAdmin): 145 raise ImproperlyConfigured("'%s.inlines[%d]' does not inherit " 146 "from BaseModelAdmin." % (cls.__name__, idx)) 147 if not inline.model: 148 raise ImproperlyConfigured("'model' is a required attribute " 149 "of '%s.inlines[%d]'." % (cls.__name__, idx)) 150 if not issubclass(inline.model, models.Model): 151 raise ImproperlyConfigured("'%s.inlines[%d].model' does not " 152 "inherit from models.Model." % (cls.__name__, idx)) 153 validate_base(inline, inline.model) 154 validate_inline(inline) 155 156 157 158 159 140 160 def validate_base(cls, model): 141 161 opts = model._meta 142 162
