Найти тему

Создание и регистрация модели данных Django

Оглавление

Третья статья серии уроков по web- программированию на языке Python на фреймворке Django. В данной серии мы разработаем web-приложение для организации, которая проводит обучающие курсы по IT-дисциплинам.

В предыдущих работах мы выполнили подготовительную работу по созданию Web- проекта и приложения. Теперь продолжим работу и создадим базу данных (БД), с которой будет взаимодействовать наше приложение. Для представления БД в Django используется понятие модели. Модель — это программный модуль, входящий в состав приложения, который служит своего рода посредником между остальными его модулями и базой данных. Или, говоря другими словами, модель — суть представление базы данных, ее таблиц, полей, индексов и связей в терминологии языка программирования, на котором пишется данное приложение.

Модель выполняет следующие задачи:

  • описывает таблицы базы данных и их структуру в терминологии используемого языка программирования. Благодаря этому мы можем получать данные из базы, не прибегая к сторонним средствам;
  • представляет считанные из базы данные в терминологии используемого языка программирования. Так что мы, считав с помощью модели какую-либо запись таблицы, сможем обработать ее средствами выбранного нами языка, опять же, не привлекая сторонние инструменты;
  • реализует механизм выборки данных, их фильтрации и сортировки;
  • реализует механизм добавления в таблицы новых записей, а также правки и удаления существующих;
  • следит за корректностью данных, позволяя обрабатывать возникающие ошибки средствами выбранного языка программирования;

Если уж совсем коротко, то модель — наш пропуск в базу данных. Приложение может включать в свой состав произвольное количество моделей. Обычно каждая модель соответствует определенной таблице в базе данных.

1. Создание модели «Факультет (faculty)»

В нашей базе данных мы будем хранить информацию о учебных курсах (название; преподаватель, реализующий курс; описание курса; факультет, где реализуется курс), информацию о факультете (название), информацию о преподавателе (Ф.И. и дата рождения).

При добавлении в проект нового приложения Django сама создает в пакете приложения модуль с «говорящим» названием models. Его-то мы и используем для хранения кода моделей. Если мы откроем этот модуль в редакторе, то увидим, что он содержит всего одно выражение (комментарии не в счет):

Введите приведенный ниже код модели faculty и вставьте его в нижнюю часть вашего файла models.py. Эта модель используется для хранения информации о факультете, где реализуется тот или иной курс Мы создали faculty как модель, а не как свободный текст или список выбора, чтобы возможные значения могли управляться через базу данных, а не были закодированными.

-2

Модель имеет одно поле CharField строкового типа, которое используется для описания факультета (оно ограничено 200 символами и имеет некоторый текст-подсказку help_text. В конце модели мы объявляем метод __str __ (), который просто возвращает название факультета, определенного конкретной записью. Нет подробного имени, поэтому поле будет называться name в формах.

2. Создание модели «Учебный курс (course)».

Добавьте описание модели в файл models.py:

-3

Course связан с другими моделями отношением «многие ко многим» (ManyToManyField), так что курс может читаться на нескольких факультетах, а факультет может иметь много курсов. Преподаватель объявляется через отношение «один ко многим» (ForeignKey), поэтому у каждого курса будет только один автор-преподаватель, но у преподавателя может быть много разработанных курсов.

3. Создание модели «Преподаватель (teacher)»

Добавьте в файл models.py описание модели преподавателя:

-4

Модель определяет преподавателя как имя (first_name), фамилию (last_name), дату рождения (date_of_birth).

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

4. Регистрация моделей

Встроенное приложение Django admin может использовать ваши модели для автоматического создания части сайта, предназначенной для создания, просмотра, обновления и удаления записей. Это может сэкономить вам много времени в процессе разработки, упрощая тестирование ваших моделей на предмет правильности данных. Оно также может быть полезным для управления данными на стадии публикации, в зависимости от типа web-сайта. Проект Django рекомендует это приложение только для управления внутренними данными (т.е. для использования администраторами, либо людьми внутри вашей организации). Все необходимые настройки, которые необходимо включить в admin приложение вашего веб-сайта, были сделаны автоматически, когда вы создали каркас проекта admin_learning . В результате все, что необходимо сделать для того, чтобы добавить модели в приложение admin, это зарегистрировать их.

Вначале откройте файл admin.py в папке приложения. Пока он содержит одну строку: from django.contrib import admin. Зарегистрируйте модели путем вставки следующего текста в нижнюю часть этого файла:

-5

Этот код просто импортирует модели и затем вызывает admin.site.register для регистрации каждой из них.

Дальнейшую работу с нашей БД мы будем осуществлять через административную панель, что будет рассмотрено в следующей работе.