Django modellari


Django modeli — ma’lumotlar bazangizdagi jadval.


ULASHISH

Django modellari

Ushbu darslikda hozirgacha chiqarilgan natijalar Python kodidan yoki HTML shablonlaridan olingan statik ma’lumotlar edi.

Endi Django bu jarayonda fayllarni o‘zgartirish yoki yuklashga hojat qoldirmasdan ma’lumotlar bilan ishlash imkonini qanday berishini ko‘ramiz.

Django’da ma’lumotlar model deb ataladigan obyektlarda yaratiladi, ular aslida ma’lumotlar bazasidagi jadvallardir.


Jadval (model) yaratish

Model yaratish uchun /members/ papkasidagi models.py fayliga o‘ting.

Uni oching va Member sinfini (class) yaratib, Member jadvalini qo‘shing hamda unda jadval maydonlarini tavsiflang:

my_tennis_club/members/models.py:

from django.db import models

class Member(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)

Birinchi maydon — firstname — matnli maydon bo‘lib, a’zolarning ismini saqlaydi.

Ikkinchi maydon — lastname — ham matnli maydon bo‘lib, unda a’zoning familiyasi saqlanadi.

firstname ham, lastname ham ko‘pi bilan 255 ta belgidan iborat bo‘ladigan qilib sozlangan.

SQLite ma’lumotlar bazasi

Django loyihasini yaratganimizda bo‘sh SQLite ma’lumotlar bazasi ham hosil bo‘ldi.

U my_tennis_club ildiz papkasida yaratilgan va fayl nomi — db.sqlite3.

Standart holatda Django loyihasida yaratilgan barcha modellar shu ma’lumotlar bazasida jadval sifatida yaratiladi.


Migratsiya (migrate)

Endi models.py faylida modelni tavsiflaganimizdan so‘ng, jadvalni ma’lumotlar bazasida haqiqatan yaratish uchun buyruq bajarishimiz kerak.

/my_tennis_club/ papkasiga o‘ting va quyidagi buyruqni bajaring:

python manage.py makemigrations members

Buning natijasi quyidagicha bo‘ladi:

Migrations for 'members':   members\migrations\0001_initial.py     - Create model Member (myworld) C:\Users\Your Name\myworld\my_tennis_club>

Django o‘zgarishlarni tavsiflovchi fayl yaratadi va uni /migrations/ papkasida saqlaydi:

my_tennis_club/members/migrations/0001_initial.py:

# Generated by Django 5.1.7 on 2025-03-20 11:39

from django.db import migrations, models

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Member',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('firstname', models.CharField(max_length=255)),
                ('lastname', models.CharField(max_length=255)),
            ],
        ),
    ]

E’tibor bering, Django jadvallaringizga id maydonini qo‘shadi. U auto increment number, ya’ni avtomatik oshib boruvchi son (birinchi yozuv 1 qiymatini, ikkinchi yozuv 2 qiymatini oladi va h.k.). Bu Django’ning standart xatti-harakati bo‘lib, o‘zingizning id maydoningizni tavsiflash orqali uni o‘zgartirishingiz mumkin.

Jadval hali yaratilmagan. Yana bitta buyruqni bajarishingiz kerak, shunda Django /migrations/ papkasidagi yangi fayl tarkibi asosida SQL operatorini (so‘rovini) yaratib, uni bajaradi.

migrate buyrug‘ini bajaring:

python manage.py migrate

Buning natijasi quyidagicha bo‘ladi:

Operations to perform:   Apply all migrations: admin, auth, contenttypes, members, sessions Running migrations:   Applying members.0001_initial... OK (myworld) C:\Users\Your Name\myworld\my_tennis_club>

Endi ma’lumotlar bazangizda Member jadvali bor!



SQL’ni ko‘rish

Qo‘shimcha ma’lumot: yuqoridagi migratsiya natijasida bajarilgan SQL operatorini (so‘rovini) ko‘rishingiz mumkin. Buning uchun migratsiya raqamini ko‘rsatib, quyidagi buyruqni bajarish kifoya:

python manage.py sqlmigrate members 0001

Buning natijasi quyidagicha bo‘ladi:

BEGIN; -- -- Create model Member -- CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255) NOT NULL); COMMIT;


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!