summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Kocherhans <joseph@jkocherhans.com>2007-09-12 01:29:41 +0000
committerJoseph Kocherhans <joseph@jkocherhans.com>2007-09-12 01:29:41 +0000
commit35be27874b6a77471bd039b57a8d2004ab545d20 (patch)
treeb3192e7f2aec74ae7d1abff8214c62ad2a7036ce
parent4046a617935c1fa1e25d998b706af54f8ef92eef (diff)
Added form_add and form_change methods to ModelAdmin.
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@6100 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/options.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 71f565f1e8..cd6d592427 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -309,6 +309,20 @@ class ModelAdmin(BaseModelAdmin):
"""
return self.queryset(request)
+ def form_add(self, request):
+ """
+ Returns a Form class for use in the admin add view.
+ """
+ fields = flatten_fieldsets(self.fieldsets_add(request))
+ return forms.form_for_model(self.model, fields=fields, formfield_callback=self.formfield_for_dbfield)
+
+ def form_change(self, request, obj):
+ """
+ Returns a Form class for use in the admin change view.
+ """
+ fields = flatten_fieldsets(self.fieldsets_change(request, obj))
+ return forms.form_for_instance(obj, fields=fields, formfield_callback=self.formfield_for_dbfield)
+
def save_add(self, request, model, form, formsets, post_url_continue):
"""
Saves the object in the "add" stage and returns an HttpResponseRedirect.
@@ -423,9 +437,7 @@ class ModelAdmin(BaseModelAdmin):
# Object list will give 'Permission Denied', so go back to admin home
post_url = '../../../'
- fields = flatten_fieldsets(self.fieldsets_add(request))
- ModelForm = forms.form_for_model(model, fields=fields, formfield_callback=self.formfield_for_dbfield)
-
+ ModelForm = self.form_add(request)
inline_formsets = []
if request.method == 'POST':
form = ModelForm(request.POST, request.FILES)
@@ -485,9 +497,7 @@ class ModelAdmin(BaseModelAdmin):
if request.POST and request.POST.has_key("_saveasnew"):
return self.add_view(request, form_url='../../add/')
- fields = flatten_fieldsets(self.fieldsets_change(request, obj))
- ModelForm = forms.form_for_instance(obj, fields=fields, formfield_callback=self.formfield_for_dbfield)
-
+ ModelForm = self.form_change(request, obj)
inline_formsets = []
if request.method == 'POST':
form = ModelForm(request.POST, request.FILES)