Создание моделей курсов

Наша платформа электронного обучения будет предлагать курсы по различным темам. Каждый курс будет разделен на настраиваемое количество модулей, и каждый модуль будет содержать настраиваемое количество содержимого. Будет иметься содержимое различных типов: текст, файл, изображение или видео. В следующем примере показано, как будет выглядеть структура данных каталога курсов:

Subject 1
    Course 1
        Module 1
            Content 1 (image)
            Content 3 (text)
        Module 2
            Content 4 (text)
            Content 5 (file)
            Content 6 (video)
            ...

Давайте создадим модели курса. Отредактируйте файл models.py программы courses и добавьте в него следующий код:

from django.db import models
from django.contrib.auth.models import User


class Subject(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True)

    class Meta:
        ordering = ('title',)

    def __str__(self):
        return self.title


class Course(models.Model):
    owner = models.ForeignKey(User, related_name='courses_created')
    subject = models.ForeignKey(Subject, related_name='courses')
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique=True)
    overview = models.TextField()
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('-created',)

    def __str__(self):
        return self.title


class Module(models.Model):
    course = models.ForeignKey(Course, related_name='modules')
    title = models.CharField(max_length=200)
    description = models.TextField(blank=True)

    def __str__(self):
        return self.title

Мы инициируем модели Subject, Course, и Module. Рассмотрим подробнее поля модели Course:

  • owner : Инструктор, создавший этот курс.
  • subject : Тема, к которой относится данный курс. Поле ForeignKey, которое указывает модель Subject.
  • title : Заголовок курса.
  • slug : Алиас курса.
  • overview : Это колонка TextField, которая включает в себя обзор курса.
  • created : Дата и время создания курса - будет автоматически устанавливаться при создании новых объектов из-за auto_now_add=True.

Каждый course делится на несколько модулей. Поэтому модель Module содержит поле ForeignKey, которое указывает на модель Course.

Откройте терминал и выполните следующую команду, чтобы создать начальную миграцию для этого приложения:

python manage.py makemigrations

Вы увидите следующее:

Migrations for 'courses':
    0001_initial.py:
        - Create model Course
        - Create model Module
        - Create model Subject
        - Add field subject to course

Затем выполните следующую команду, чтобы применить все миграции к базе данных:

python manage.py migrate

Выходные данные будут содержать следующую строку:

Applying courses.0001_initial... OK

Это говорит о том, что модели приложения курсов были синхронизированы с базой данных.

results matching ""

    No results matching ""