جنگو یکی از محبوبترین فریمورکهای وب برنامهنویسی پایتون است که به توسعهدهندگان این امکان را میدهد تا به سرعت برنامههای وب قدرتمندی بسازند. یک از بخشهای اصلی و بسیار مهم جنگو، سیستم ORM (Object-Relational Mapping) آن است که به شما اجازه میدهد به راحتی با پایگاه دادههای مختلف ارتباط برقرار کنید بدون اینکه نیاز باشد مستقیماً از SQL استفاده کنید.
یکی از مفاهیم کلیدی در این سیستم ORM، چیزی است به نام QuerySet. این مفهوم به شما اجازه میدهد که دادهها را از پایگاه داده با استفاده از شیوههای پایتونیک انتخاب و فیلتر کنید. میتوان گفت که QuerySet لیستی از اشیا مدل است که انتخاب یا فیلتر میشوند.
زمانی که با QuerySet کار میکنید، شما دارید با یک مدل سطح بالا ولی انعطافپذیر و قدرتمند همگام شدهاید. همه چیزی که نیاز دارید این است که با این مدل همچون یک راهنمای مترجم برای SQL رفتار کنید که درخواستهای شما را به زبان پایگاه داده تبدیل میکند و همچنین نتیجه را مجدداً به شکل قابل استفاده توسط پایتون ارائه میدهد.
بنابراین، اگر تاکنون با دیتابیسهای SQL کار کردهاید و نیاز داشتهاید تا کوئریهایی به زبان SQL بنویسید، در جنگو به جای نوشتن کوئریهای مستقیم به کمک QuerySet میتوانید از متدهای پایتونیک بهره بگیرید تا به همان نتایج دست پیدا کنید.
در اینجا مثالی از نحوه استفاده از QuerySet برای فیلتر کردن دادهها در مدلهای جنگو آورده شده است:
from myapp.models import Book
# Get all books
books = Book.objects.all()
# Filter books by title
titled_books = Book.objects.filter(title='Django Unleashed')
# Get a single book by primary key
book = Book.objects.get(pk=1)
در مثال بالا، Book.objects.all()
تمامی اشیا موجود در مدل Book را انتخاب میکند.
Book.objects.filter(title='Django Unleashed')
تمامی کتابهایی که عنوان آنها 'Django Unleashed' است را فیلتر و انتخاب میکند.
Book.objects.get(pk=1)
کتابی که شناسه اولیه (primary key) آن ۱ است را انتخاب میکند.