I did initially think that it might have been a concurrent write messing with the DB but I was able to see this issue locally once where this view was the only one being called. The objects being saved were also using update_fields and had the correct value on them while calling save. Is there a db setting or django setting (maybe a default that I haven't changed) that could be interfering with transactions and cause behaviour like this?
I'll turn on logs for the database, but I can't really narrow down on a repro pattern for this which makes it all the more difficult to catch it. I've faced it only once locally. Logging all on our production database is not an option since there are a lot of queries.