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.

Modelma’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.