Stadion.objects.filter(user=user)
or
Stadion.objects.filter(user_id=user_id)
ikkalasi ham bir xil vazifani bajaradi lekin object bo'yicha filter qilgandan ko'ra id bilan amalga oshirilgan filter ancha samaraliroqdir. Gap bu yerda tezlik bo'yicha ketmoqda, django tezlik bo'yicha boshqa frameworklardan orqada qolganligi sabab yozgan apilarimizni maksimal darajada optimallashtirishimiz kerak.
SELECT ... FROM stadions WHERE user_id = 5;
birinchi filterda, sqlga shunaqa so'rov ketsa
SELECT ... FROM stadions WHERE user_id = (SELECT id FROM auth_user WHERE ...);
ikkinchisida mana bunday sql so'rovini yuboradi, ko'rib turganizdek ikkinchi holatda user idsini olish uchun ham yana bir bor sql so'rovini amalga oshirmoqda.
Foreign key orqali ulangan fieldlarga objectlar saqlanadi deb o'ylaymiz, sabab django admin panelda bizga shuni ko'rsatadi, lekin sql bazasini ko'rsangiz shunchaki id saqlanganligini ko'rasiz. Django har tomonlama foydalanuvchiga moslashganligi uchun ham tezlik borasida biroz ortda qoladi
@only_python_1