Django Моделі
Модель Django — це таблиця у вашій базі даних.
Django Моделі
Дотепер у цьому підручнику виводом були статичні дані з шаблонів Python або HTML.
Тепер ми побачимо, як Django дозволяє нам працювати з даними, не змінюючи чи завантажуючи файли під час процесу.
У Django дані створюються в об’єктах, які називаються моделями, і насправді є таблицями в базі даних.
Створити таблицю (модель)
Щоб створити модель, перейдіть до файлу models.py
у папці /members/
.
Відкрийте його та додайте таблицю Member
, створивши Member
class
і опишіть поля таблиці в ньому:
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)
Перше поле, firstname
, є текстовим полем і міститиме імена учасників.
Друге поле, lastname
, також є текстовим полем із прізвищем учасника.
Як firstname
, так і lastname
налаштовано на 255 символів.
SQLite База даних
Коли ми створили проєкт Django, ми отримали порожню базу даних SQLite.
Його було створено в кореневій папці my_tennis_club
і має назву файлу db.sqlite3
.
За замовчуванням усі моделі, створені в проєкті Django, будуть створені як таблиці в цій базі даних.
Міграція (Перенесення)
Тепер, коли ми описали модель у файлі models.py
, ми повинні виконати команду для фактичного створення таблиці в базі даних.
Перейдіть до папки /my_tennis_club/
і виконайте цю команду:
py manage.py makemigrations members
Що призведе до цього результату:
Migrations for 'members':
members\migrations\0001_initial.py
- Create model Member
(myworld) C:\Users\Your Name\myworld\my_tennis_club>
Django створює файл із описом змін і зберігає його в папці /migrations/
:
my_tennis_club/members/migrations/0001_initial.py
:
# Generated by Django 4.1.2 on 2022-10-27 11:14
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)),
],
),
]
Зауважте, що Django вставляє поле id
для ваших таблиць, яке є auto increment number
(числом автоматичного збільшення) (перший запис отримує значення 1, другий запис 2 тощо), це стандартна поведінка Django, ви можете змінити її, описавши власне поле id
.
Таблицю ще не створено, вам доведеться виконати ще одну команду, а потім Django створить і виконає інструкцію SQL на основі вмісту нового файлу в папці /migrations/
.
Виконайте команду міграції:
py manage.py migrate
Що призведе до цього результату:
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>
Тепер у вашій базі даних є таблиця Member
!
Представити SQL
Як додаткова примітка: ви можете представити SQL інструкцію, яку було виконано під час міграції вище. Все, що вам потрібно зробити, це виконати цю команду з номером міграції:
py manage.py sqlmigrate members 0001
Що призведе до цього результату:
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;