جستجوی رکوردها


در این بخش به فرآیند جستجو و بازیابی داده‌ها از مدل‌های تعریف‌شده در پایگاه داده (که همان جداول یا Tables محسوب می‌شوند) می‌پردازیم و یاد می‌گیریم چگونه از این داده‌ها در تمپلیت استفاده کنیم.

سیستم ORM (Object-Relational Mapper) جنگو یکی از نقاط قوت اصلی آن است. این سیستم با انواع پایگاه داده‌ از جمله MySQL، PostgreSQL، SQLite، Oracle و MariaDB سازگار است و مدیریت داده‌ها را به‌شکل ساده و قدرتمند ممکن می‌سازد. هسته‌ی ORM جنگو بر پایه‌ی QuerySetها بنا شده است. بنابراین نخستین گام برای کار با داده‌ها، آشنایی کامل با مفاهیم Query و QuerySet است.

یک QuerySet در واقع مجموعه‌ای از کوئری‌های پایگاه داده است که برای استخراج اشیاء (objects) از مدل‌ها استفاده می‌شود. علاوه بر این، می‌توان با ارسال پارامترهای دلخواه، نتایج برگشتی را فیلتر یا محدود کرد.

ساختار کلی QuerySet

یک QuerySet به‌طور معمول، به شکل زیر تعریف می‌گردد.

queryVariable = ModelName.objects.method()
  • queryVariable ↔ متغیری است که خروجی در آن ذخیره می‌شود.

  • ModelName ↔ نام مدلی است که قصد داریم داده‌های آن را بازیابی کنیم.

  • objects ↔ واسط پیش‌فرض برای دسترسی به داده‌های مدل.

متدهای متداول در QuerySet

  • all() ↔ تمام رکوردهای مدل را برمی‌گرداند.

  • get() ↔ یک رکورد خاص را بر اساس شرایط مشخص برمی‌گرداند. (اگر رکوردی پیدا نشود یا بیش از یک رکورد موجود باشد، خطا رخ می‌دهد.)

  • filter() ↔ رکوردهایی را برمی‌گرداند که با شرایط تعیین‌شده مطابقت دارند.

  • exclude() ↔ رکوردهایی را برمی‌گرداند که با شرایط تعیین‌شده مطابقت ندارند.

 

⚠️ قبل از ایجاد QuerySet روی یک مدل، باید مطمئن شویم که مدل مربوطه را import کرده‌ایم.
⚠️ از آنجا که وظیفه‌ی برقراری ارتباط با مدل‌ها بر عهده‌ی Viewهاست، این import معمولاً در فایل views.py انجام می‌شود.