[1.7.x] Fixed #22747 -- Add backwards compatibility tip for new behavior of formset.save(commit=False).

Thanks django at patjack.co.uk.

Backport of 2f7a7842ba from master
This commit is contained in:
Tim Graham 2014-06-04 12:37:10 -04:00
parent 8d6e0d4588
commit 868b5e5e95
1 changed files with 12 additions and 0 deletions

View File

@ -523,6 +523,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.