Update one record
try:
record = Account.objects.filter(id=1).first()
record.balance = new_amount
record.save()
messages.success(request, "Company info has been updated." )
except Exception as e:
messages.error(request, "Something went wrong.")
print("Exception Update balance ==========================")
print(e)
print("End of Exception ==========================")
Short (.update) - used with .filter not .get
MyModel.objects.filter(pk=some_value).update(field1='some value')
Another short way (.select_for_update())
Student.objects.select_for_update().filter(id=3).update(score = 10)
Update multiple
objects = MyModel.objects.filter(field1='Computer')
for obj in objects:
obj.field2 = 'cool'
obj.save()
Update or create
MyModel.objects.update_or_create(pk=some_value,defaults={'field1':'some value'})
Update based on the old field value
from django.db.models import Count, F, Value
MyModel.objects.filter(pk=some_value).update(field1=F('field1') + 1) # value of field1 = field1 + 1
bulk_update()
objs = [
Entry.objects.create(headline='Entry 1'),
Entry.objects.create(headline='Entry 2'),
]
objs[0].headline = 'This is entry 1'
objs[1].headline = 'This is entry 2'
Entry.objects.bulk_update(objs, ['headline'])