{{{
#!python
class ArticleAdmin(admin.ModelAdmin):
def save_formset(self, request, form, formset, change):
instances = formset.save(commit=False)
for instance in instances:
instance.user = request.user
instance.save()
formset.save_m2m()
}}}
In the text, there is a link to
https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#saving-
objects-in-the-formset, but not to
https://docs.djangoproject.com/en/1.8/topics/forms/formsets/#can-delete,
where it is mentioned that with Django 1.7, `formset.save(commit=False)`
no longer deletes objects automatically.
(This is also mentioned in the
[https://docs.djangoproject.com/en/1.8/releases/1.7/#miscellaneous Django
1.7 Release Notes], but for me at least, this was not enough to make the
required mental leap...)
Thus, I suggest to augment the above example code as follows:
{{{
#!diff
diff --git a/docs/ref/contrib/admin/index.txt
b/docs/ref/contrib/admin/index.txt
index 416a70e..d6a5312 100644
--- a/docs/ref/contrib/admin/index.txt
+++ b/docs/ref/contrib/admin/index.txt
@@ -1259,6 +1259,8 @@ templates used by the :class:`ModelAdmin` views:
class ArticleAdmin(admin.ModelAdmin):
def save_formset(self, request, form, formset, change):
instances = formset.save(commit=False)
+ for obj in formset.deleted_objects:
+ obj.delete()
for instance in instances:
instance.user = request.user
instance.save()
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24668>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_docs: => 0
* has_patch: 0 => 1
* needs_better_patch: => 0
* needs_tests: => 0
* stage: Unreviewed => Accepted
Comment:
That makes sense.
Could you submit your proposed change as a pull request?
Thanks.
--
Ticket URL: <https://code.djangoproject.com/ticket/24668#comment:1>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"e15c55e2bf5eb2f1073d18b4ee6fdce2369820f2" e15c55e2]:
{{{
#!CommitTicketReference repository=""
revision="e15c55e2bf5eb2f1073d18b4ee6fdce2369820f2"
Fixed #24668 -- Amended ModelAdmin.save_formset() example for #10284.
Thanks Carsten Fuchs.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24668#comment:2>
Comment (by Tim Graham <timograham@…>):
In [changeset:"32871fc215cb7be0f4fbddcd099cca35c05f2e42" 32871fc]:
{{{
#!CommitTicketReference repository=""
revision="32871fc215cb7be0f4fbddcd099cca35c05f2e42"
[1.7.x] Fixed #24668 -- Amended ModelAdmin.save_formset() example for
#10284.
Thanks Carsten Fuchs.
Backport of e15c55e2bf5eb2f1073d18b4ee6fdce2369820f2 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24668#comment:3>
Comment (by Tim Graham <timograham@…>):
In [changeset:"e02616b1b0f89fd84cc0c6118f8c871fde8f3650" e02616b]:
{{{
#!CommitTicketReference repository=""
revision="e02616b1b0f89fd84cc0c6118f8c871fde8f3650"
[1.8.x] Fixed #24668 -- Amended ModelAdmin.save_formset() example for
#10284.
Thanks Carsten Fuchs.
Backport of e15c55e2bf5eb2f1073d18b4ee6fdce2369820f2 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/24668#comment:4>