کوئریست (QuerySet Intro)
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
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.