متدهای مرتب‌سازی و محدودسازی


پس از بازیابی داده‌ها، گاهی نیاز داریم که رکوردها را مرتب‌سازی — Ordering — یا محدودسازی Limitingکنیم. به عنوان مثال محدودسازی ۱۰ کتاب آخر یک نویسنده یا مرتب‌کردن محصولات فروشگاه بر اساس قیمت. جنگو این کار را به‌سادگی با متدهای order_by و slicing فراهم می‌کند.

⸺ مرتب‌سازی صعودی

projects = project.objects.all().order_by("title")

همهٔ پروژه‌ها را بر اساس عنوان (title) به‌صورت الفبایی صعودی (از الف به ی) مرتب می‌کند. یعنی پروژه‌هایی که عنوانشان با «آ» شروع می‌شود، اول لیست می‌آیند.


⸺ مرتب‌سازی نزولی

projects = project.objects.all().order_by("-created")

همهٔ پروژه‌ها را بر اساس فیلد created (معمولاً تاریخ ایجاد) به‌صورت نزولی مرتب می‌کند. علامت منفی (-) نشان‌دهندهٔ ترتیب معکوس است؛ یعنی جدیدترین پروژه‌ها اول لیست ظاهر می‌شوند.


⸺ محدود کردن تعداد رکوردها

projects = project.objects.all()[:5]

فقط 5 رکورد اول از لیست پروژه‌ها را برمی‌گرداند. این روش معمولاً برای نمایش «آخرین پروژه‌ها» یا «محدود کردن نتایج در صفحه‌بندی» استفاده می‌شود. این کار در پس‌زمینه با LIMIT 5 در SQL پیاده‌سازی می‌شود و بسیار کارآمد است.


⸺ رد کردن چند رکورد اول

projects = project.objects.all()[5:]

اولین 5 رکورد را نادیده می‌گیرد و از ششمین رکورد به بعد را برمی‌گرداند. استفاده مستقیم از slice در پروژه‌های واقعی به‌جای Paginator جنگو توصیه نمی‌شود، چون Paginator امن‌تر و بهینه‌تر است.