متدهای مرتبسازی و محدودسازی
پس از بازیابی دادهها، گاهی نیاز داریم که رکوردها را مرتبسازی — 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
امنتر و بهینهتر است.