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.

Reply via email to