Фотография
click to show
click to show
📌 #آموزش_حرفهای | افزایش سرعت کوئریها با Case/When در جنگو
فرض کنید میخواهید در لیست محصولات، به آنهایی که بالای ۵۰۰ هزار تومان هستند برچسب "Premium" و به بقیه "Standard" بدهید. روش اشتباه این است که در کد پایتون و داخل for این کار را انجام دهید. روش حرفهای این است که محاسبات را به دیتابیس بسپارید!
✅ روش سریع و بهینه (بدون فشار به رم سرور):
from django.db.models import Case, Value, When, CharField
from .models import Product
# به جای حلقه زدن روی تک تک محصولات، دیتابیس خودش برچسب میزند
products = Product.objects.annotate(
status=Case(
When(price__gt=500000, then=Value('Premium')),
default=Value('Standard'),
output_field=CharField(),
)
)
# حالا هر محصول یک فیلد مجازی به اسم status دارد
for p in products:
print(f"{p.title}: {p.status}")
💡 چرا این ترفند مهم است؟ وقتی ۱۰,۰۰۰ رکورد دارید، پردازش در پایتون ثانیهها طول میکشد و رم مصرف میکند، اما با این روش، دیتابیس در چند میلیثانیه خروجی نهایی را به شما میدهد.
#آموزش #جنگو #پایتون #BackEnd
733 ·