متد get (QuerySet Get)
اینجا درباره «متد get جنگو» حرف می زنیم. منظور ما «گرفتن داده» از مدل است. QuerySet یعنی فهرست نتایج دیتابیس. سپس می توانی ستون ها یا ردیف های خاص را برگردانی. مثل لیست دانش آموزان که اسم یا نفر خاص را می خواهی.
برگرداندن دیکشنری ها با values()
تابع values() هر ردیف را به دیکشنری (Dictionary) تبدیل می کند. دیکشنری یعنی جفت «کلید:مقدار». بنابراین خواندن فیلدها ساده می شود.
views.py:
from django.http import HttpResponse
from django.template import loader
from .models import Member
def testing(request):
mydata = Member.objects.all().values()
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
انتخاب ستون های خاص با values_list()
تابع values_list() فقط ستون های درخواستی را می دهد. تاپل (Tuple) یعنی لیست تغییرناپذیر. خروجی هر ردیف یک تاپل است.
views.py:
from django.http import HttpResponse
from django.template import loader
from .models import Member
def testing(request):
mydata = Member.objects.values_list('firstname')
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
انتخاب ردیف های خاص با filter()
تابع filter() فقط ردیف های مطابق شرط را می آورد. شرط یعنی مقایسه فیلد با مقدار. مثل «نام برابر Emil».
views.py:
from django.http import HttpResponse
from django.template import loader
from .models import Member
def testing(request):
mydata = Member.objects.filter(firstname='Emil').values()
template = loader.get_template('template.html')
context = {
'mymembers': mydata,
}
return HttpResponse(template.render(context, request))
نکته: برای نمایش داده در قالب، آن را در context بفرست. سپس با حلقه for چاپ کن.
گام های عملی
- مدل را آماده و مهاجرت را اجرا کن.
- در ویو از
values()یاvalues_list()استفاده کن. - اگر لازم بود، با
filter()ردیف ها را محدود کن. - QuerySet را در
contextبگذار و رندر کن.
جمع بندی سریع
- values(): هر ردیف، دیکشنری می شود.
- values_list(): فقط ستون های انتخابی.
- filter(): محدودکردن ردیف ها با شرط.
- نمایش با حلقه
forدر قالب.
مطلب پیشنهادی: معرفی QuerySet برای شروع بهتر. همچنین فیلتر کردن QuerySet را بعدش ببین. اگر تازه ای، راهنمای متد get جنگو نقطه مناسبی است.