Django 4. SQL Lite. Створення моделей та міграція БД.
Моделі Django описують структуру бази даних. І саме за допомогою моделей здійснюється взаємодія з цією базою даних.
За замовчуванням Django використовує SQLite як базу даних. Вона дуже проста у використанні та не вимагає запущеного сервера. Усі файли бази даних можуть легко переноситися з одного комп’ютера до іншого. Однак за необхідності ми можемо використовувати в Django більшість поширених СУБД, наприклад MySQL.
При створенні проекту за замовчуванням до каталогу додається файл models.py, який застосовується для визначення моделей. Модель являє собою клас, успадкований від django.db.models.Model.
Ми створюємо простий додаток керування домашніми фінансами. В нас буде декілька таблиць в нашій БД:
- Гаманці – wallets
- Категорії доходів та витрат – categories
- Перелік транзакцій – transactions
- Баланс гаманців – ballance
Змінимо наш файл models.py так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
from django.db import models class Wallets(models.Model): name = models.CharField(max_length=45) currency = models.CharField(max_length=45) class Ballance(models.Model): id_wallet = models.IntegerField() total = models.DecimalField(max_digits=12, decimal_places=2) class Categories(models.Model): name = models.CharField(max_length=45) direction = models.CharField(max_length=45) class Transactions(models.Model): id_wallet = models.IntegerField() suma = models.DecimalField( max_digits=12, decimal_places=2) category = models.IntegerField() date = models.DateTimeField() |
Для кожної моделі ми описали потрібні нам поля. Для кожного поля вказаний його тип. Ми використали такі типи:
- CharField – текстове поле, яке зберігає послідовність символів. Для нього обов’язково треба вказати параметр max_length, який задає максимальну довжину рядка, що зберігається.
- IntegerField – числове поле, яке зберігає цілі числа.
- DecimalField – числове поле, з фіксованою точністю і обов’язковими параметрами: max_digits=12, decimal_places=2. Довжина числа та точність.
Ключове поле id для кожної моделі описувати не потрібно, воно буде створено за замовчуванням.
На підставі описаної моделі нам треба створити та виконати міграцію. Міграція створює таблиці бази даних відповідно до визначення моделей.
Виконуємо міграцію за допомогою команди:
1 |
python manage.py makemigrations |
Все, тепер можна виконувати запити до наших таблиць в базі даних