Eksik Eager Load (ARCH2051)
Anahtar python.orm.missing-eager-load · Önem warning · Kategori orm
İlişkili navigasyon verisini select_related / prefetch_related belirtmeden dolaşmak, çalışma anında N+1 sorgu tetikler. Eager load, bunu önlemenin kanonik yoludur.
Hatalı
Bölüm başlığı “Hatalı”orders = Order.objects.filter(status="paid")for order in orders: total = sum(item.price for item in order.items.all()) # her order için SELECTorders = Order.objects.filter(status="paid").prefetch_related("items")for order in orders: total = sum(item.price for item in order.items.all()) # tek seferde yüklendiDüzeltme
Bölüm başlığı “Düzeltme”İlişki üzerinde iterasyon yapmadan önce sorguya prefetch_related veya select_related ekleyin.