0Pricing
Python Academy · Урок

Модели и миграции

Определяйте базу данных и выполняйте миграции

«Модели и миграции» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Проекты и приложения
  2. Модели и миграции
  3. Представления и URL-адреса
  4. Административная панель Django
← Назад к Python Academy