mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	[2.0.x] Fixed #28866 -- Made InlineAdminFormSet include InlineModelAdmin's Media before its formset's Media.
This provides better backwards compatibility following refs #28377.
Backport of 03974d8122 from master
			
			
This commit is contained in:
		
				
					committed by
					
						 Tim Graham
						Tim Graham
					
				
			
			
				
	
			
			
			
						parent
						
							d31424fec1
						
					
				
				
					commit
					6ece69a726
				
			| @@ -304,7 +304,7 @@ class InlineAdminFormSet: | |||||||
|  |  | ||||||
|     @property |     @property | ||||||
|     def media(self): |     def media(self): | ||||||
|         media = self.formset.media + self.opts.media |         media = self.opts.media + self.formset.media | ||||||
|         for fs in self: |         for fs in self: | ||||||
|             media = media + fs.media |             media = media + fs.media | ||||||
|         return media |         return media | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| from django import forms | from django import forms | ||||||
| from django.contrib import admin | from django.contrib import admin | ||||||
|  | from django.db import models | ||||||
|  |  | ||||||
| from .models import ( | from .models import ( | ||||||
|     Author, BinaryTree, CapoFamiglia, Chapter, ChildModel1, ChildModel2, |     Author, BinaryTree, CapoFamiglia, Chapter, ChildModel1, ChildModel2, | ||||||
| @@ -73,8 +74,16 @@ class InnerInline2(admin.StackedInline): | |||||||
|         js = ('my_awesome_inline_scripts.js',) |         js = ('my_awesome_inline_scripts.js',) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CustomNumberWidget(forms.NumberInput): | ||||||
|  |     class Media: | ||||||
|  |         js = ('custom_number.js',) | ||||||
|  |  | ||||||
|  |  | ||||||
| class InnerInline3(admin.StackedInline): | class InnerInline3(admin.StackedInline): | ||||||
|     model = Inner3 |     model = Inner3 | ||||||
|  |     formfield_overrides = { | ||||||
|  |         models.IntegerField: {'widget': CustomNumberWidget}, | ||||||
|  |     } | ||||||
|  |  | ||||||
|     class Media: |     class Media: | ||||||
|         js = ('my_awesome_inline_scripts.js',) |         js = ('my_awesome_inline_scripts.js',) | ||||||
|   | |||||||
| @@ -453,6 +453,16 @@ class TestInlineMedia(TestDataMixin, TestCase): | |||||||
|         Inner3(dummy=42, holder=holder).save() |         Inner3(dummy=42, holder=holder).save() | ||||||
|         change_url = reverse('admin:admin_inlines_holder3_change', args=(holder.id,)) |         change_url = reverse('admin:admin_inlines_holder3_change', args=(holder.id,)) | ||||||
|         response = self.client.get(change_url) |         response = self.client.get(change_url) | ||||||
|  |         self.assertEqual( | ||||||
|  |             response.context['inline_admin_formsets'][0].media._js, | ||||||
|  |             [ | ||||||
|  |                 'admin/js/vendor/jquery/jquery.min.js', | ||||||
|  |                 'admin/js/jquery.init.js', | ||||||
|  |                 'admin/js/inlines.min.js', | ||||||
|  |                 'my_awesome_inline_scripts.js', | ||||||
|  |                 'custom_number.js', | ||||||
|  |             ] | ||||||
|  |         ) | ||||||
|         self.assertContains(response, 'my_awesome_inline_scripts.js') |         self.assertContains(response, 'my_awesome_inline_scripts.js') | ||||||
|  |  | ||||||
|     def test_all_inline_media(self): |     def test_all_inline_media(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user