Added back save_model that was removed from [8273] to allow for both pre- and post- operations around save in ModelAdmin.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8307 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
58cd4902a7
commit
8ad96b4d29
|
@ -438,11 +438,17 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
"""
|
"""
|
||||||
return form.save(commit=False)
|
return form.save(commit=False)
|
||||||
|
|
||||||
|
def save_model(self, request, obj, form, change):
|
||||||
|
"""
|
||||||
|
Given a model instance save it to the database.
|
||||||
|
"""
|
||||||
|
obj.save()
|
||||||
|
|
||||||
def save_formset(self, request, form, formset, change):
|
def save_formset(self, request, form, formset, change):
|
||||||
"""
|
"""
|
||||||
Given an inline formset return unsaved instances.
|
Given an inline formset save it to the database.
|
||||||
"""
|
"""
|
||||||
return formset.save(commit=False)
|
formset.save()
|
||||||
|
|
||||||
def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
|
def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
|
||||||
opts = self.model._meta
|
opts = self.model._meta
|
||||||
|
@ -562,13 +568,10 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
save_as_new=request.POST.has_key("_saveasnew"))
|
save_as_new=request.POST.has_key("_saveasnew"))
|
||||||
formsets.append(formset)
|
formsets.append(formset)
|
||||||
if all_valid(formsets) and form_validated:
|
if all_valid(formsets) and form_validated:
|
||||||
new_object.save()
|
self.save_model(request, new_object, form, change=False)
|
||||||
form.save_m2m()
|
form.save_m2m()
|
||||||
for formset in formsets:
|
for formset in formsets:
|
||||||
instances = self.save_formset(request, form, formset, change=False)
|
self.save_formset(request, form, formset, change=False)
|
||||||
for instance in instances:
|
|
||||||
instance.save()
|
|
||||||
formset.save_m2m()
|
|
||||||
|
|
||||||
self.log_addition(request, new_object)
|
self.log_addition(request, new_object)
|
||||||
return self.response_add(request, new_object)
|
return self.response_add(request, new_object)
|
||||||
|
@ -642,13 +645,10 @@ class ModelAdmin(BaseModelAdmin):
|
||||||
formsets.append(formset)
|
formsets.append(formset)
|
||||||
|
|
||||||
if all_valid(formsets) and form_validated:
|
if all_valid(formsets) and form_validated:
|
||||||
new_object.save()
|
self.save_model(request, new_object, form, change=True)
|
||||||
form.save_m2m()
|
form.save_m2m()
|
||||||
for formset in formsets:
|
for formset in formsets:
|
||||||
instances = self.save_formset(request, form, formset, change=True)
|
self.save_formset(request, form, formset, change=True)
|
||||||
for instance in instances:
|
|
||||||
instance.save()
|
|
||||||
formset.save_m2m()
|
|
||||||
|
|
||||||
change_message = self.construct_change_message(request, form, formsets)
|
change_message = self.construct_change_message(request, form, formsets)
|
||||||
self.log_change(request, new_object, change_message)
|
self.log_change(request, new_object, change_message)
|
||||||
|
|
|
@ -524,21 +524,19 @@ with an operator:
|
||||||
``ModelAdmin`` methods
|
``ModelAdmin`` methods
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
``save_form(self, request, form, change)``
|
``save_model(self, request, obj, form, change)``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The ``save_form`` method is given the ``HttpRequest``, a ``ModelForm``
|
The ``save_model`` method is given the ``HttpRequest``, a model instance,
|
||||||
instance and a boolean value based on whether it is adding or changing the
|
a ``ModelForm`` instance and a boolean value based on whether it is adding or
|
||||||
object.
|
changing the object. Here you can do any pre- or post-save operations.
|
||||||
|
|
||||||
This method should return an unsaved instance. For example to attach
|
For example to attach ``request.user`` to the object prior to saving::
|
||||||
``request.user`` to the object prior to saving::
|
|
||||||
|
|
||||||
class ArticleAdmin(admin.ModelAdmin):
|
class ArticleAdmin(admin.ModelAdmin):
|
||||||
def save_form(self, request, form, change):
|
def save_model(self, request, obj, form, change):
|
||||||
instance = form.save(commit=False)
|
obj.user = request.user
|
||||||
instance.user = request.user
|
obj.save()
|
||||||
return instance
|
|
||||||
|
|
||||||
``save_formset(self, request, form, formset, change)``
|
``save_formset(self, request, form, formset, change)``
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -547,9 +545,7 @@ The ``save_formset`` method is given the ``HttpRequest``, the parent
|
||||||
``ModelForm`` instance and a boolean value baesed on whether it is adding or
|
``ModelForm`` instance and a boolean value baesed on whether it is adding or
|
||||||
changing the parent object.
|
changing the parent object.
|
||||||
|
|
||||||
This method should return unsaved instances. These instances will later be
|
For example to attach ``request.user`` to each changed formset
|
||||||
saved to the database. By default the formset will only return instances that
|
|
||||||
have changed. For example to attach ``request.user`` to each changed formset
|
|
||||||
model instance::
|
model instance::
|
||||||
|
|
||||||
class ArticleAdmin(admin.ModelAdmin):
|
class ArticleAdmin(admin.ModelAdmin):
|
||||||
|
@ -557,7 +553,8 @@ model instance::
|
||||||
instances = formset.save(commit=False)
|
instances = formset.save(commit=False)
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
instance.user = request.user
|
instance.user = request.user
|
||||||
return instances
|
instance.save()
|
||||||
|
formset.save_m2m()
|
||||||
|
|
||||||
``ModelAdmin`` media definitions
|
``ModelAdmin`` media definitions
|
||||||
--------------------------------
|
--------------------------------
|
||||||
|
|
Loading…
Reference in New Issue