دوره‌ها / Django / کوئری‌ست (QuerySet Intro)

کوئری‌ست (QuerySet Intro)

25 دقیقه Article

QuerySet: جستجوی هوشمند در دیتابیس 🔍

QuerySet یک رابط قدرتمند برای جستجو و فیلتر کردن داده‌ها در دیتابیس است. با QuerySet می‌تونید داده‌ها رو به راحتی پیدا کنید، مرتب کنید و محدود کنید!

QuerySet چیست؟ QuerySet یک لیست lazy (تنبل) از رکوردهاست. یعنی تا زمانی که واقعاً به داده‌ها نیاز نداشته باشید، query به دیتابیس ارسال نمیشه!

QuerySet های پایه

# گرفتن همه رکوردها
all_posts = Post.objects.all()

# گرفتن یک رکورد
post = Post.objects.get(id=1)

# گرفتن اولین رکورد
first_post = Post.objects.first()

# چک کردن وجود
exists = Post.objects.filter(title="Test").exists()

ویژگی Lazy Evaluation:

# این query هنوز اجرا نشده!
posts = Post.objects.all()

# حالا اجرا میشه (وقتی iterate می‌کنیم)
for post in posts:
    print(post.title)

# یا وقتی به list تبدیل می‌کنیم
post_list = list(posts)
نکته عملکرد: QuerySet ها lazy هستن، یعنی می‌تونید چندین فیلتر رو زنجیره کنید و فقط یک query به دیتابیس ارسال بشه. این کار خیلی کارآمدتره!

🎯 تمرین عملی:

یک QuerySet بسازید که تمام پست‌های منتشر شده رو بگیره، سپس اون رو به 10 تا محدود کنید و بر اساس تاریخ مرتب کنید. تعداد نتایج رو هم نمایش بدید.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: کار با QuerySet Easy
سوال تمرین

🎯 تمرین عملی: QuerySet پیشرفته

یک QuerySet بسازید که پست‌های منتشر شده رو بگیره، به 10 تا محدود کنه و بر اساس تاریخ مرتب کنه.

پاسخ تمرین
PYTHON
from .models import Post

def get_latest_posts():
    posts = Post.objects.filter(
        published=True
    ).order_by('-created_at')[:10]
    return posts

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

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