mirror of
https://github.com/django/django.git
synced 2025-11-16 10:10:27 +00:00
Fixed #29682 -- Fixed admin change form crash if a view-only model's form has an extra field.
This commit is contained in:
parent
0e7a9525ba
commit
d311124be5
6 changed files with 36 additions and 3 deletions
|
|
@ -286,6 +286,22 @@ class UtilsTests(SimpleTestCase):
|
|||
("not Really the Model", MockModelAdmin.test_from_model)
|
||||
)
|
||||
|
||||
def test_label_for_field_form_argument(self):
|
||||
class ArticleForm(forms.ModelForm):
|
||||
extra_form_field = forms.BooleanField()
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
model = Article
|
||||
|
||||
self.assertEqual(
|
||||
label_for_field('extra_form_field', Article, form=ArticleForm()),
|
||||
'Extra form field'
|
||||
)
|
||||
msg = "Unable to lookup 'nonexistent' on Article or ArticleForm"
|
||||
with self.assertRaisesMessage(AttributeError, msg):
|
||||
label_for_field('nonexistent', Article, form=ArticleForm()),
|
||||
|
||||
def test_label_for_property(self):
|
||||
# NOTE: cannot use @property decorator, because of
|
||||
# AttributeError: 'property' object has no attribute 'short_description'
|
||||
|
|
|
|||
|
|
@ -91,6 +91,14 @@ class ChapterXtra1Admin(admin.ModelAdmin):
|
|||
)
|
||||
|
||||
|
||||
class ArticleForm(forms.ModelForm):
|
||||
extra_form_field = forms.BooleanField(required=False)
|
||||
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
model = Article
|
||||
|
||||
|
||||
class ArticleAdmin(admin.ModelAdmin):
|
||||
list_display = (
|
||||
'content', 'date', callable_year, 'model_year', 'modeladmin_year',
|
||||
|
|
@ -101,10 +109,11 @@ class ArticleAdmin(admin.ModelAdmin):
|
|||
list_filter = ('date', 'section')
|
||||
autocomplete_fields = ('section',)
|
||||
view_on_site = False
|
||||
form = ArticleForm
|
||||
fieldsets = (
|
||||
('Some fields', {
|
||||
'classes': ('collapse',),
|
||||
'fields': ('title', 'content')
|
||||
'fields': ('title', 'content', 'extra_form_field'),
|
||||
}),
|
||||
('Some other fields', {
|
||||
'classes': ('wide',),
|
||||
|
|
|
|||
|
|
@ -1768,6 +1768,7 @@ class AdminViewPermissionsTest(TestCase):
|
|||
response = self.client.get(article_change_url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['title'], 'View article')
|
||||
self.assertContains(response, '<label>Extra form field:</label>')
|
||||
self.assertContains(response, '<a href="/test_admin/admin/admin_views/article/" class="closelink">Close</a>')
|
||||
post = self.client.post(article_change_url, change_dict)
|
||||
self.assertEqual(post.status_code, 302)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue