From 2f7a7842baa50d74b9d4e93180375b7ff13b43e3 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Wed, 4 Jun 2014 12:37:10 -0400 Subject: [PATCH] Fixed #22747 -- Add backwards compatibility tip for new behavior of formset.save(commit=False). Thanks django at patjack.co.uk. --- docs/topics/forms/formsets.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/topics/forms/formsets.txt b/docs/topics/forms/formsets.txt index 44d3154683..e4aa7b5984 100644 --- a/docs/topics/forms/formsets.txt +++ b/docs/topics/forms/formsets.txt @@ -509,6 +509,18 @@ model instances for deleted forms will be deleted when you call >>> for obj in formset.deleted_objects: ... obj.delete() + If you want to maintain backwards compatibility with Django 1.6 and earlier, + you can do something like this:: + + >>> try: + >>> # For Django 1.7+ + >>> for obj in formset.deleted_objects: + >>> obj.delete() + >>> except AssertionError: + >>> # Django 1.6 and earlier already deletes the objects, trying to + >>> # delete them a second time raises an AssertionError. + >>> pass + On the other hand, if you are using a plain ``FormSet``, it's up to you to handle ``formset.deleted_forms``, perhaps in your formset's ``save()`` method, as there's no general notion of what it means to delete a form.