diff --git a/docs/QWEB_BEST_PRACTICES.md b/docs/QWEB_BEST_PRACTICES.md
index 01ce5ba..a2a4eef 100644
--- a/docs/QWEB_BEST_PRACTICES.md
+++ b/docs/QWEB_BEST_PRACTICES.md
@@ -51,27 +51,35 @@
## None/Null Safety Patterns
-### Pattern 1: Simple Fallback
+### Pattern 1: Intermediate Variable + Simple Fallback (RECOMMENDED)
**Scenario**: Value might be None, need a default
```python
# Python context
-display_price = None
+price_value = None # or any value that could be None
product_price = 100.0
```
```xml
-
-
+
+
+
-
-
+
+
+
+
```
-### Pattern 2: Nested Object Access
+**Why this works**:
+- Step 1 extracts without defaults (returns None if missing)
+- Step 2 uses Python's short-circuit `or` for safe None-handling
+- Step 3 uses simple variable reference in attribute
+- QWeb can reliably evaluate each step
+
+### Pattern 2: Nested Object Access (Safe Chaining)
**Scenario**: Need to access nested attributes safely (e.g., `product.uom_id.category_id.name`)
@@ -82,13 +90,7 @@ product.uom_id.category_id = None # Category is None
```
```xml
-
-
-
-
-
-
-
+
@@ -117,26 +119,50 @@ quantity = "invalid_string" # Should be int/float
## Variable Computation Patterns
-### Pattern 1: Sequential Computation
+### Pattern 1: Extract Then Fallback (The Safe Pattern)
-When multiple safe variables depend on each other:
+When values might be None, use extraction + fallback:
```xml
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+