Модели и миграции
Определяйте базу данных и выполняйте миграции
«Модели и миграции» — бесплатный урок Python Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Модели Django
Модель Django — это класс Python, который определяет структуру таблицы базы данных. Каждый атрибут является полем. Модели находятся в файле models.py приложения.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')Типы полей
Django предоставляет множество типов полей, соответствующих типам столбцов.
CharFieldдля короткого текста (требует указатьmax_length)TextFieldдля длинного текстаIntegerField,BooleanField,DateTimeField
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
views = models.IntegerField(default=0)
print('Fields map to columns')Неявный первичный ключ
Django автоматически добавляет к каждой модели первичный ключ id с автоувеличением, поэтому обычно Вам не нужно объявлять его самостоятельно.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')Параметры полей
Поля принимают такие параметры, как default, null, blank и unique, которые управляют поведением и проверкой данных.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
published = models.BooleanField(default=False)
subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')Даты
DateTimeField(auto_now_add=True) сохраняет момент первого создания записи. Параметр auto_now=True обновляет значение при каждом сохранении.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')Связи
Связывайте модели с помощью ForeignKey для отношения «один ко многим». Параметр on_delete сообщает Django, что делать при удалении связанной записи.
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Post(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')Что такое миграции?
Миграции — это способ Django превращать изменения моделей в изменения схемы базы данных. Это система контроля версий для базы данных.
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')makemigrations
python manage.py makemigrations анализирует Ваши модели и создаёт файлы миграций с описанием изменений.
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')migrate
python manage.py migrate применяет ожидающие миграции к базе данных, создавая или изменяя таблицы.
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')Рабочий процесс миграций
Цикл выглядит так: измените models.py, выполните makemigrations, затем выполните migrate. Повторяйте эти действия при каждом изменении моделей.
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')Запросы к моделям
Каждая модель получает менеджер с именем objects для выполнения запросов: Post.objects.all(), .filter(), .get() и .create().
# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')Быстрая проверка
Проверьте свои знания о миграциях.
Итоги
Вы определили модели и выполнили их миграцию.
- Модели — это классы в файле
models.pyс типизированными полями - Django автоматически добавляет первичный ключ
id ForeignKeyсвязывает модели, аon_deleteзадаёт каскадное поведениеmakemigrations, а затемmigrateсинхронизируют базу данныхModel.objectsвыполняет запросы к данным
Часто задаваемые вопросы
Урок «Модели и миграции» бесплатный?
Да — полный текст урока «Модели и миграции» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модели и миграции»?
Определяйте базу данных и выполняйте миграции Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Модели и миграции»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.