Hi, the model.save() arguments `force_update` and `update_fields` cause an explicit check if the update statement matched any rows.
Every once in a while one of my applications runs into a "race condition" where one process does an update (with one of the model save arguments) and another process just removed the same object. You then get a very generic DatabaseError with the message "Forced update did not affect any rows.", or "Save with update_fields did not affect any rows.". This invariably makes me scratch my head and wonder what happened. As per ticket #21761, I don't understand why that is an error and a regular call to save() doesn't throw an error. But since I can easily recover from this exception, I think it would be nice if these exceptions would be typed in a more specific subclass so that I can catch them and do something nice for the end-user. As a side note, you might want to check that a single row is updated, and not "more than zero"; just in case a primary key is composed from more than one column and there's some other error... kind regards Jeroen Pulles Cross-posting from django-users as I didn't get any response there -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at http://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/cf4917c5-a048-4f0e-a8dc-b2d7487036a3%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.