Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #10640 - Adds a add_form_template option to ModelAdmin. Thanks …

…jcsackett.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12216 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 31f3a8c1ad3b6ec33c503241484107bf35cdadba 1 parent 09b585e
@jezdez jezdez authored
View
7 django/contrib/admin/options.py
@@ -200,6 +200,7 @@ class ModelAdmin(BaseModelAdmin):
inlines = []
# Custom templates (designed to be over-ridden in subclasses)
+ add_form_template = None
change_form_template = None
change_list_template = None
delete_confirmation_template = None
@@ -618,8 +619,12 @@ def render_change_form(self, request, context, add=False, change=False, form_url
'save_on_top': self.save_on_top,
'root_path': self.admin_site.root_path,
})
+ if add and self.add_form_template is not None:
+ form_template = self.add_form_template
+ else:
+ form_template = self.change_form_template
context_instance = template.RequestContext(request, current_app=self.admin_site.name)
- return render_to_response(self.change_form_template or [
+ return render_to_response(form_template or [
"admin/%s/%s/change_form.html" % (app_label, opts.object_name.lower()),
"admin/%s/change_form.html" % app_label,
"admin/change_form.html"
View
15 docs/ref/contrib/admin/index.txt
@@ -712,11 +712,20 @@ view. Templates can override or extend base admin templates as described in
If you don't specify this attribute, a default template shipped with Django
that provides the standard appearance is used.
+.. attribute:: ModelAdmin.add_form_template
+
+Path to a custom template that will be used by the model object creation
+views. Templates can override or extend base admin templates as described in
+`Overriding Admin Templates`_.
+
+If you don't specify this attribute, a default template shipped with Django
+that provides the standard appearance is used.
+
.. attribute:: ModelAdmin.change_form_template
-Path to a custom template that will be used by both the model object creation
-and change views. Templates can override or extend base admin templates as
-described in `Overriding Admin Templates`_.
+Path to a custom template that will be used by the model object change views.
+Templates can override or extend base admin templates as described in
+`Overriding Admin Templates`_.
If you don't specify this attribute, a default template shipped with Django
that provides the standard appearance is used.
View
1  tests/regressiontests/admin_views/models.py
@@ -110,6 +110,7 @@ class CustomArticleAdmin(admin.ModelAdmin):
"""
change_list_template = 'custom_admin/change_list.html'
change_form_template = 'custom_admin/change_form.html'
+ add_form_template = 'custom_admin/add_form.html'
object_history_template = 'custom_admin/object_history.html'
delete_confirmation_template = 'custom_admin/delete_confirmation.html'
View
11 tests/regressiontests/admin_views/tests.py
@@ -550,11 +550,11 @@ def testCustomModelAdminTemplates(self):
self.assert_("var hello = 'Hello!';" in request.content)
self.assertTemplateUsed(request, 'custom_admin/change_list.html')
- # Test custom change form template
+ # Test custom add form template
request = self.client.get('/test_admin/admin/admin_views/customarticle/add/')
- self.assertTemplateUsed(request, 'custom_admin/change_form.html')
+ self.assertTemplateUsed(request, 'custom_admin/add_form.html')
- # Add an article so we can test delete and history views
+ # Add an article so we can test delete, change, and history views
post = self.client.post('/test_admin/admin/admin_views/customarticle/add/', {
'content': '<p>great article</p>',
'date_0': '2008-03-18',
@@ -563,7 +563,10 @@ def testCustomModelAdminTemplates(self):
self.assertRedirects(post, '/test_admin/admin/admin_views/customarticle/')
self.failUnlessEqual(CustomArticle.objects.all().count(), 1)
- # Test custom delete and object history templates
+ # Test custom delete, change, and object history templates
+ # Test custom change form template
+ request = self.client.get('/test_admin/admin/admin_views/customarticle/1/')
+ self.assertTemplateUsed(request, 'custom_admin/change_form.html')
request = self.client.get('/test_admin/admin/admin_views/customarticle/1/delete/')
self.assertTemplateUsed(request, 'custom_admin/delete_confirmation.html')
request = self.client.get('/test_admin/admin/admin_views/customarticle/1/history/')
View
1  tests/templates/custom_admin/add_form.html
@@ -0,0 +1 @@
+{% extends "admin/change_form.html" %}
Please sign in to comment.
Something went wrong with that request. Please try again.