Третья статья серии уроков по web- программированию на языке Python на фреймворке Django. В данной серии мы разработаем web-приложение для организации, которая проводит обучающие курсы по IT-дисциплинам.
В предыдущих работах мы выполнили подготовительную работу по созданию Web- проекта и приложения. Теперь продолжим работу и создадим базу данных (БД), с которой будет взаимодействовать наше приложение. Для представления БД в Django используется понятие модели. Модель — это программный модуль, входящий в состав приложения, который служит своего рода посредником между остальными его модулями и базой данных. Или, говоря другими словами, модель — суть представление базы данных, ее таблиц, полей, индексов и связей в терминологии языка программирования, на котором пишется данное приложение.
Модель выполняет следующие задачи:
- описывает таблицы базы данных и их структуру в терминологии используемого языка программирования. Благодаря этому мы можем получать данные из базы, не прибегая к сторонним средствам;
- представляет считанные из базы данные в терминологии используемого языка программирования. Так что мы, считав с помощью модели какую-либо запись таблицы, сможем обработать ее средствами выбранного нами языка, опять же, не привлекая сторонние инструменты;
- реализует механизм выборки данных, их фильтрации и сортировки;
- реализует механизм добавления в таблицы новых записей, а также правки и удаления существующих;
- следит за корректностью данных, позволяя обрабатывать возникающие ошибки средствами выбранного языка программирования;
Если уж совсем коротко, то модель — наш пропуск в базу данных. Приложение может включать в свой состав произвольное количество моделей. Обычно каждая модель соответствует определенной таблице в базе данных.
1. Создание модели «Факультет (faculty)»
В нашей базе данных мы будем хранить информацию о учебных курсах (название; преподаватель, реализующий курс; описание курса; факультет, где реализуется курс), информацию о факультете (название), информацию о преподавателе (Ф.И. и дата рождения).
При добавлении в проект нового приложения Django сама создает в пакете приложения модуль с «говорящим» названием models. Его-то мы и используем для хранения кода моделей. Если мы откроем этот модуль в редакторе, то увидим, что он содержит всего одно выражение (комментарии не в счет):
Введите приведенный ниже код модели faculty и вставьте его в нижнюю часть вашего файла models.py. Эта модель используется для хранения информации о факультете, где реализуется тот или иной курс Мы создали faculty как модель, а не как свободный текст или список выбора, чтобы возможные значения могли управляться через базу данных, а не были закодированными.
Модель имеет одно поле CharField строкового типа, которое используется для описания факультета (оно ограничено 200 символами и имеет некоторый текст-подсказку help_text. В конце модели мы объявляем метод __str __ (), который просто возвращает название факультета, определенного конкретной записью. Нет подробного имени, поэтому поле будет называться name в формах.
2. Создание модели «Учебный курс (course)».
Добавьте описание модели в файл models.py:
Course связан с другими моделями отношением «многие ко многим» (ManyToManyField), так что курс может читаться на нескольких факультетах, а факультет может иметь много курсов. Преподаватель объявляется через отношение «один ко многим» (ForeignKey), поэтому у каждого курса будет только один автор-преподаватель, но у преподавателя может быть много разработанных курсов.
3. Создание модели «Преподаватель (teacher)»
Добавьте в файл models.py описание модели преподавателя:
Модель определяет преподавателя как имя (first_name), фамилию (last_name), дату рождения (date_of_birth).
Теперь все ваши модели созданы. Теперь переустановите миграцию базы данных, чтобы добавить их в свою базу данных, так как описано в предыдущей работе.
4. Регистрация моделей
Встроенное приложение Django admin может использовать ваши модели для автоматического создания части сайта, предназначенной для создания, просмотра, обновления и удаления записей. Это может сэкономить вам много времени в процессе разработки, упрощая тестирование ваших моделей на предмет правильности данных. Оно также может быть полезным для управления данными на стадии публикации, в зависимости от типа web-сайта. Проект Django рекомендует это приложение только для управления внутренними данными (т.е. для использования администраторами, либо людьми внутри вашей организации). Все необходимые настройки, которые необходимо включить в admin приложение вашего веб-сайта, были сделаны автоматически, когда вы создали каркас проекта admin_learning . В результате все, что необходимо сделать для того, чтобы добавить модели в приложение admin, это зарегистрировать их.
Вначале откройте файл admin.py в папке приложения. Пока он содержит одну строку: from django.contrib import admin. Зарегистрируйте модели путем вставки следующего текста в нижнюю часть этого файла:
Этот код просто импортирует модели и затем вызывает admin.site.register для регистрации каждой из них.
Дальнейшую работу с нашей БД мы будем осуществлять через административную панель, что будет рассмотрено в следующей работе.