Mastering Django ORM Update Queries — From Basics to Pro Level

Updating data properly is just as important as selecting data. In this guide, you will learn how to update records correctly in Django ORM — from basic .save() usage to pro techniques like atomic updates, bulk updates, F expressions, and best practices! 📚 1. Basic Update Using .save() Fetch and modify a single object user = NewUser.objects.get(pk=1) user.email = 'newemail@example.com' user.save() ⚡ 2. Updating Specific Fields with .save(update_fields=[...]) user = NewUser.objects.get(pk=1) user.email = 'newemail@example.com' user.save(update_fields=['email']) 🎯 3. Updating Multiple Records at Once Using .update() NewUser.objects.filter(user_type=2).update(is_active=False) 🧠 4. .save() vs .update() — Key Differences Aspect .save() .update() Works on Single object QuerySet (multiple) Triggers signals? ✅ Yes ❌ No Auto-updates auto_now fields? ✅ Yes ❌ No Custom logic inside save() runs? ✅ Yes ❌ No Speed for bulk ❌ Slow ✅ Fast 🔥 5. Upda...

Feature/Behavior Comparison: var, let, and const

Feature/Behavior var let const
Scope Function-scoped Block-scoped Block-scoped
Re-declaration Allowed Not allowed Not allowed
Re-assignment Allowed Allowed Not allowed
Hoisting Yes, initialized to undefined Yes, but not initialized Yes, but not initialized
Temporal Dead Zone (TDZ) No Yes Yes
Global Object Property Yes No No
Block-level Declaration No Yes Yes
Constant Nature No No Yes
Example var a = 10; var a = 20; (No error) let a = 10; let a = 20; (Error) const a = 10; a = 20; (Error)
Loop Behavior Shares same variable across iterations New variable for each iteration Not applicable
Usage Recommendation Avoid Use for variables that will change value Use for constant values

Detailed Explanation of Each Feature/Behavior

1. Scope

Definition: Scope refers to where a variable is accessible within the code.


function testScope() {
if (true) {
var x = 10;
let y = 20;
const z = 30;
}
console.log(x); // 10 (accessible outside the block)
console.log(y); // Error: y is not defined (block-scoped)
console.log(z); // Error: z is not defined (block-scoped)
}
testScope();

2. Re-declaration

Definition: Re-declaration refers to declaring the same variable multiple times in the same scope.


var a = 1;
var a = 2; // No error with var

let b = 1;
// let b = 2; // Error: b has already been declared

const c = 1;
// const c = 2; // Error: c has already been declared

3. Re-assignment

Definition: Re-assignment refers to changing the value of a variable after it has been initialized.


var x = 10;
x = 20; // Allowed

let y = 30;
y = 40; // Allowed

const z = 50;
// z = 60; // Error: Assignment to constant variable

4. Hoisting

Definition: Hoisting is JavaScript's behavior of moving variable and function declarations to the top of their scope before code execution.


console.log(a); // undefined
var a = 10;

// console.log(b); // Error: Cannot access 'b' before initialization
let b = 20;

// console.log(c); // Error: Cannot access 'c' before initialization
const c = 30;

5. Temporal Dead Zone (TDZ)

Definition: The TDZ is the time between entering a block and the declaration of a variable, during which the variable cannot be accessed.


// console.log(x); // Error: Cannot access 'x' before initialization (TDZ)
let x = 10;

// console.log(y); // Error: Cannot access 'y' before initialization (TDZ)
const y = 20;

var z = 30; // No TDZ for var

6. Global Object Property

Definition: When variables are declared globally using var, they become properties of the window object in browsers (or global in Node.js). let and const do not create properties on the global object.


var a = 10;
let b = 20;
const c = 30;

console.log(window.a); // 10 (a is a property of the global object)
console.log(window.b); // undefined (b is not a property of the global object)
console.log(window.c); // undefined (c is not a property of the global object)

7. Block-level Declaration

Definition: let and const are confined to the block {} in which they are declared, while var ignores block-level scope and is accessible outside the block.


if (true) {
var x = 10;
let y = 20;
const z = 30;
}
console.log(x); // 10 (var is accessible outside the block)
console.log(typeof y); // undefined (let is block-scoped)
console.log(typeof z); // undefined (const is block-scoped)

8. Constant Nature

Definition: const cannot be reassigned after the initial assignment. However, if a const variable is an object or array, its properties or elements can still be modified.


const person = { name: 'John' };
person.name = 'Jane'; // Allowed

const numbers = [1, 2, 3];
numbers.push(4); // Allowed

// person = { name: 'Bob' }; // Error: Assignment to constant variable

9. Loop Behavior

Definition: In loops, var creates one variable for all iterations, while let creates a new variable for each iteration. const is not suitable for loops if you need to reassign variables.


for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100); // Outputs 3, 3, 3
}

for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 100); // Outputs 0, 1, 2
}

10. Usage Recommendation

Definition: let and const should be preferred over var in modern JavaScript development. Use let when the variable’s value will change, and use const when you need to ensure that a variable’s value won’t change.


let counter = 0;
counter++; // Use let when the value will change

const name = 'Alice'; // Use const when the value will not change

Comments

Post a Comment

Popular posts from this blog

Implementing Throttling in Django REST Framework.

Leveraging Asynchronous Views in Django REST Framework for High-Performance APIs

Differences Between List, Dictionary, and Tuple in Python