دوره‌ها / Django / مرتب‌سازی (QuerySet Order By)

مرتب‌سازی (QuerySet Order By)

20 دقیقه Article

مرتب‌سازی: چیدمان داده‌ها 📊

با استفاده از order_by() می‌تونید داده‌ها رو به ترتیب دلخواه مرتب کنید. این کار برای نمایش لیست‌ها خیلی مهمه!

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

# مرتب‌سازی صعودی
posts = Post.objects.all().order_by('created_at')

# مرتب‌سازی نزولی
posts = Post.objects.all().order_by('-created_at')

# مرتب‌سازی چند فیلد
posts = Post.objects.all().order_by('published', '-created_at')

مثال‌های کاربردی:

# جدیدترین پست‌ها اول
latest = Post.objects.all().order_by('-created_at')

# محبوب‌ترین پست‌ها (بیشترین view)
popular = Post.objects.all().order_by('-views', '-created_at')

# مرتب بر اساس نام نویسنده
by_author = Post.objects.all().order_by('author__username', 'title')

مرتب‌سازی در مدل (Meta ordering)

می‌تونید مرتب‌سازی پیش‌فرض رو در مدل تعریف کنید:

class Post(models.Model):
    title = models.CharField(max_length=200)
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        ordering = ['-created_at']  # مرتب‌سازی پیش‌فرض

# حالا همه QuerySet ها به صورت خودکار مرتب میشن
posts = Post.objects.all()  # خودکار بر اساس created_at مرتب میشه
نکته: اگر مرتب‌سازی پیش‌فرض در Meta تعریف شده، می‌تونید با order_by() اون رو override کنید. همچنین می‌تونید با order_by() بدون آرگومان مرتب‌سازی رو حذف کنید.

🎯 تمرین عملی:

یک QuerySet بسازید که پست‌ها رو اول بر اساس published (True اول)، بعد بر اساس views (بیشترین اول) و در نهایت بر اساس created_at (جدیدترین اول) مرتب کنه.

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.

برای ذخیره پیشرفت وارد شوید