Создание моделей курсов
Наша платформа электронного обучения будет предлагать курсы по различным темам. Каждый курс будет разделен на настраиваемое количество модулей, и каждый модуль будет содержать настраиваемое количество содержимого. Будет иметься содержимое различных типов: текст, файл, изображение или видео. В следующем примере показано, как будет выглядеть структура данных каталога курсов:
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
Это говорит о том, что модели приложения курсов были синхронизированы с базой данных.