Why doesn't django only UPDATE the fields that are changed?

I recently discovered the fact that Django will generate the UPDATE statement for each and every column of that table, when i call save, even though only 1 or 2 fields have been updated. But when you pass update_fields to .save(), it will generate queries taking into account those fields too. So, why doesn’t Django do this by default? Surely there must be a better way to check if an attribute has been changed and then only generate an UPDATE query for that statement.

There have been previous threads on this - see Automatically setting update_fields when saving a model instance for what I think is the most recent one.

The brief answer is that it exposes your application to a wider range of race-condition errors. So it’s safer to save the entire object.

I see, thanks for pointing me to the topic. Thanks!