مرتب سازی (QuerySet Order By)
می خواهیم نتایج دیتابیس را مرتب کنیم. «مرتب سازی (Order)» یعنی چیدمان داده ها. با متد order_by() می گوییم بر چه فیلدی بچیند. مثل مرتب کردن لیست دانش آموزان بر اساس نام.
مرتب سازی صعودی با order_by()
صعودی یعنی از کوچک به بزرگ. رشته ها هم الفبایی می شوند. کافی است نام فیلد را بدهیم.
mydata = Member.objects.all().order_by('firstname').values()
در SQL همین کار این گونه است:
SELECT * FROM members ORDER BY firstname;
مرتب سازی نزولی با علامت منفی
نزولی یعنی بزرگ به کوچک. قبل از نام فیلد یک - بگذار.
mydata = Member.objects.all().order_by('-firstname').values()
در SQL معادل آن این است:
SELECT * FROM members ORDER BY firstname DESC;
مرتب سازی چندسطحی
می توانی چند فیلد بدهی. اولی معیار اصلی است. بعدی ها در تساوی ها تصمیم می گیرند.
mydata = Member.objects.all().order_by('lastname', '-id').values()
و نسخه SQL به این شکل است:
SELECT * FROM members ORDER BY lastname ASC, id DESC;
نکته: نام فیلد بدون خط تیره یعنی صعودی. با - یعنی نزولی.
گام های عملی
- مدل و QuerySet را آماده کن.
order_by()را با نام فیلد صدا بزن.- برای نزولی، قبل از فیلد
-بگذار. - برای چند سطح، چند نام فیلد بده.
- نتیجه را در قالب نمایش بده.
جمع بندی سریع
order_by()ترتیب نتایج را تعیین می کند.- پیش فرض صعودی است.
-fieldیعنی نزولی.- چند فیلد را پشت سرهم بده.
- SQL معادل را راحت مقایسه کن.
ادامه مسیر: برای ساخت شرط ها سر بزن به فیلتر QuerySet. برای آشنایی پایه ها، صفحه معرفی QuerySet را بخوان. سپس با فایل های استاتیک جنگو ادامه بده.