Djangodagi 'q' obyekti nima qiladi.

Djangodagi 'q' obyekti nima qiladi.


I didn't this photo

Django frameworkida ORM lar bilan ishlaymiz va bu ORM esa Djangoni Malumotlar bazasi ya'ni Object Relation Management = Obyekt munosabatlarini boshqarish uchun xizmat qiladi. Aslida esa bu ORM ni orqasida SQL --> Structured Query Lenguage tili turadi buni ma'nosi esa Strukturalangan So'rovlar tili deb tarjima qilinadi.

SQL tilida malumotlarni yaratish, saqlash , ular ustida turli xil operatisyalar bajarish va yangilash ,uchirish mumkin. Shu bilan birgalikda malumotlarni yaratish va ularni saqlash uchun usha malumotlar turadigan Malumotlar bazasi hamda shu bazaga Jadvallar va jadval uchun ustunlar ham yaratiladi.

Endi Malumotlar bazasi(Database) yaratilgandan so'ng unga juda ko'p malumotlar saqlanadi keyinchalik bizga aynan malum bir turdagi yoki aynan bir so'z bilan boshlanadigan va shunga o'xshash malumot kerak bulib qoladi ,shunday holatda biz SQL komandalaridan foydalanib bizga kerak bulgan malumotni topamiz yoki yo'qligini bilamiz.

Misol uchun SQL da biz -

Malumotlar bazamizdagi "Savollar" deb nomlangan jadvalimizdan  "Kim" va "Nima" degan so'zlar bilan boshlanuvchi malumotlarni chiqarishimiz uchun quyidagicha yozishimiz kerak

 -->  WHERE question LIKE 'Who%' OR question LIKE 'What%'

Endi biz bunaqangi holatni Django ORM da yozishimiz uchun bizga Q obyekti kerak bo'ladi.

Tepadagi misol Django ORM da quyidagicha -

Q(question__startswith='Who') | Q(question__startswith='What')


Shu bilan birgalikda biz murakkab so'rovlarni amalga oshirishimiz uchun bizga 'Q' obyekti AND hamda OR yordamchi so'zlarini beradi va biz istalgancha bularni qullashimiz mumkin. Tepadagi misolimizda biz 2 ta Q obyektidan foydalangnimiz bu ikkalasi 1 ta "Yoki" amalini beradi.

Agar biz tepadagi so'rovimizga "AND" ni ishlatadigan bulsak quyidagicha yozishimiz kerak.

Q(question__startswith='Who') , Q(question__startswith='What')

bunda ' , ' bilan ajratib yozishimiz kerak.

Oxirgisi NOT operatori o'rniga bizda '~' - belgisi ishlatiladi.

Misol : ~Q(pub_date__year=2005)


Biz 'Q' obyektini Djangodagi -> filter(), get(), exclude() kabi obyektlarda ya'ni malumotlarni qidiruvchi obyektlarda qullashimiz mumkin.


Vaqtingizni olganim uchun ming bor uzur.


Muallif: Shukurali Rezamonov

Sana: 02.01.2022.




Report Page