Darsliklar Django Model

Django Django Model

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.