Interview question
What is the difference between Model.objects.create() and Model.save()? Model.objects.create() और Model.save() में क्या अंतर है?
Answer
| Method | Steps required | Returns |
|---|---|---|
| objects.create() | One step - instantiate and save together | The saved instance |
| Model() + .save() | Two steps - instantiate, then save separately | None (save() returns None) |
# objects.create() - shorthand, does both steps at once
book = Book.objects.create(title='Django Basics', price=25.99)
# equivalent to:
book2 = Book(title='Django Basics', price=25.99)
book2.save()
# Using .save() gives you a chance to modify the instance BEFORE saving
book3 = Book(title='Advanced Django', price=35.99)
book3.price = book3.price * 0.9 # apply a discount before persisting
book3.save()
# .save() is also used for UPDATING an existing instance
book = Book.objects.get(id=1)
book.price = 19.99 # modify a field
book.save() # UPDATE query, not INSERT, since the instance already has a pk
# update_or_create() - avoids checking existence manually
book, created = Book.objects.update_or_create(
title='Django Basics', # lookup fields
defaults={'price': 22.99} # fields to set if found/created
)
print('Created new' if created else 'Updated existing')
# get_or_create() - fetch if exists, otherwise create
book, created = Book.objects.get_or_create(
title='New Book',
defaults={'price': 15.00}
)
# bulk_create() - efficient for inserting many objects in ONE query
Book.objects.bulk_create([
Book(title='Book A', price=10),
Book(title='Book B', price=20),
Book(title='Book C', price=30),
]) # single INSERT statement instead of 3 separate ones| Method | Steps | Return |
|---|---|---|
| objects.create() | एक step - instantiate और save साथ | Saved instance |
| Model() + .save() | दो steps | None |
book = Book.objects.create(title='Django Basics', price=25.99)
# बराबर है:
book2 = Book(title='Django Basics', price=25.99)
book2.save()
# save() से पहले instance modify करने का मौका
book3 = Book(title='Advanced Django', price=35.99)
book3.price = book3.price * 0.9
book3.save()
# UPDATE के लिए भी .save()
book = Book.objects.get(id=1)
book.price = 19.99
book.save()
# update_or_create()
book, created = Book.objects.update_or_create(
title='Django Basics',
defaults={'price': 22.99}
)
print('नया बना' if created else 'Update हुआ')
# get_or_create()
book, created = Book.objects.get_or_create(
title='New Book',
defaults={'price': 15.00}
)
# bulk_create() - एक query में कई objects
Book.objects.bulk_create([
Book(title='Book A', price=10),
Book(title='Book B', price=20),
])Was this answer clear?