Django update data
Prerequisites¶
Django shell¶
- Run the command
python manage.py shell
open the django shell.
Django Model - Contact¶
- We will be using model
Contact
from Django Models.
my_app/models.py
from django.db import models
class Contact(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(max_length=255)
phone = models.CharField(max_length=10, null=True)
class Meta:
db_table = "contact"
Add few records to database¶
from my_app.models import Contact
contacts = [
{"first_name": "Johan", "last_name": "K", "email": "johan@example.com"},
{"first_name": "Johanan", "last_name": "M", "email": "johanan@example.com"},
{"first_name": "Joharr", "last_name": "K", "email": "joharr@example.com"},
{"first_name": "Mani", "last_name": "M", "email": "mani@example.com"},
]
objects = [Contact(**d) for d in contacts]
results = Contact.objects.bulk_create(objects)
update single record - save()¶
- Retrieve the record and make some changes to the fields and call
save()
method to udpated the record. - Let's look at an example.
from my_app.models import Contact
obj = Contact.objects.get(email='johan@example.com')
obj.first_name = "Jerry"
obj.save()
update multiple records - bulk_update()¶
- Retrive individual records and update at once.
- use
bulk_update()
method to update it.
from my_app.models import Contact
obj1 = Contact.objects.get(email='johan@example.com')
obj1.first_name = "Jerry"
obj2 = Contact.objects.get(email='mani@example.com')
obj2.first_name = "Bingo"
updated_count = Contact.objects.bulk_update([obj1, obj2], ['first_name'])
print(updated_count)
# output: 2
update multiple records - update()¶
- Update multiple records without retrieving using
update()
from my_app.models import Contact
update_count = Contact.objects.filter(email='mani@example.com').update(last_name="MD")
print(updated_count)
# output: 2