Model Instances Update करना
# One object
obj = ModelName.objects.get(id=1)
obj.field = new_value
obj.save()
# Many rows
ModelName.objects.filter(field=value).update(field=new_value)
एक Single Object Update करना
.get() से object fetch करें, एक या ज़्यादा attributes को normal Python attributes जैसे बदलें, फिर change को वापस लिखने के लिए .save() call करें।
उदाहरण: Updating a Single Object
Fetch the object with .get(), change one or more attributes like normal Python attributes, then call .save() to write the change back.
book = Book.objects.get(id=1)
book.pages = 300
book.save()
⚠️ Run this in your own terminal or Node.js environment.
एक साथ कई Rows Update करना
एक QuerySet पर directly .update() call करना हर matching row को एक database operation में बदल देता है, उन्हें पहले Python में load किए बिना।
उदाहरण: Updating Many Rows at Once
Calling .update() directly on a QuerySet changes every matching row in one database operation, without loading them into Python first.
Book.objects.filter(genre='Action').update(is_featured=True)
⚠️ Run this in your own terminal or Node.js environment.
save() vs update()
save() एक already-fetched single instance पर काम करता है और कोई भी custom save logic या signals चलाता है। update() directly एक QuerySet पर काम करता है और speed के लिए per-instance logic skip करता है।
उदाहरण: save() vs update()
save() works on a single already-fetched instance and runs any custom save logic or signals. update() works directly on a QuerySet and skips per-instance logic for speed.
book = Book.objects.get(id=2)
book.title = 'New Title'
book.save()
Book.objects.filter(id=3).update(title='Bulk Title')
⚠️ Run this in your own terminal or Node.js environment.
- एक fetched instance पर एक attribute बदलना लेकिन .save() call करना भूल जाना, इसलिए change कभी database तक नहीं पहुंचता।
- .filter(...).update(...) उपयोग करना लेकिन model .save() signals जैसे post_save के fire होने की expect करना — वे नहीं होते, क्योंकि update() .save() bypass करता है।
- एक field update करने के लिए एक object fetch करना, यह realize न करते हुए कि update_fields save को ज़्यादा precise और efficient बना सकता था।
- एक object update करने के लिए, इसे fetch करें, इसके attributes बदलें, फिर .save() call करें।
- QuerySet.update(...) कई matching rows को directly database में एक साथ update कर सकता है।
- .save() पूरी row फिर से लिखता है; .update() bulk में सिर्फ specified fields बदलता है।
- .update() से Bulk updates तेज़ हैं लेकिन हर object की .save() method और signals skip करते हैं।
Chapter Quiz — Complete all 10 topics to unlock
0/10 topics done
Complete these topics first: