Model — Django’ning eng kuchli tushunchasi. Model — ma’lumotlar bazasi jadvalini Python sinfi sifatida ifodalaydi. Siz SQL yozmaysiz — shunchaki Python sinfini e’lon qilasiz, Django esa uni bazadagi jadvalga aylantiradi. Bu ORM (Object-Relational Mapping) deb ataladi va u Django’ni juda qulay qiladi.
Model — ma’lumotlar bazasi jadvalini ifodalovchi Python sinfi. Uning har bir maydoni jadval ustuniga mos keladi. Django ORM uni SQL bilan bog’laydi.
Model yaratish
Model models.py faylida, models.Model dan meros olib yaratiladi:
from django.db import models
class Talaba(models.Model):
ism = models.CharField(max_length=100)
yosh = models.IntegerField()
faol = models.BooleanField(default=True)
def __str__(self):
return self.ism
Bu model quyidagi ma’lumotlar bazasi jadvaliga aylanadi:
| ustun | tur |
|---|---|
| id | avtomatik (birlamchi kalit) |
| ism | matn (CharField) |
| yosh | butun son (IntegerField) |
| faol | mantiqiy (BooleanField) |
class Talaba(models.Model) — model sinfi. Har bir maydon (CharField, IntegerField) jadval ustuniga aylanadi. __str__ esa obyektni chiroyli ko’rsatadi. Diqqat: id ustunini Django avtomatik qo’shadi.
Migratsiya — modelni bazaga qo’llash
Modelni yaratgach, uni bazaga qo’llash uchun migratsiya bajariladi:
python manage.py makemigrations
python manage.py migrate
Migrations for 'darslar':
darslar/migrations/0001_initial.py
- Create model Talaba
Applying darslar.0001_initial... OK
makemigrations model o’zgarishlaridan migratsiya fayli yaratdi, migrate esa uni bazaga qo’lladi — ya’ni Talaba jadvalini yaratdi. Bu ikki bosqich Django’da baza tuzilmasini boshqarishning asosidir.
ORM bilan ma’lumot qo’shish
Model tayyor bo’lgach, ma’lumotni SQL yozmasdan, Python orqali qo’shamiz:
talaba = Talaba(ism="Farrux", yosh=26)
talaba.save()
Talaba.objects.create(ism="Master Sherkulov", yosh=30)
[Ikki talaba bazaga qo'shildi]
save() yoki objects.create() yangi yozuvni bazaga qo’shdi. Django buni avtomatik INSERT SQL so’roviga aylantiradi — siz SQL yozmadingiz.
ORM bilan ma’lumot olish
Ma’lumotni olish ham Python orqali bajariladi. Talaba.objects.all() barcha yozuvlarni qaytaradi:
talabalar = Talaba.objects.all()
kattalar = Talaba.objects.filter(yosh__gte=18)
Bu so’rovlar quyidagi natijani beradi:
| ism | yosh |
|---|---|
| Farrux | 26 |
| Master Sherkulov | 30 |
objects.all() — barcha talabalar, filter(yosh__gte=18) — yoshi 18 dan katta yoki teng bo’lganlar (gte — greater than or equal). Django buni SQL SELECT ... WHERE so’roviga aylantiradi. Bu ORM’ning kuchi — murakkab SQL o’rniga toza Python kodi.
Xulosa
Bu bo’limda model yaratish (models.Model), migratsiya (makemigrations, migrate), ORM bilan ma’lumot qo’shish (save, create) va olish (all, filter) ni ko’rib chiqdik. Model — Django’da ma’lumot bilan ishlashning asosidir.