Раздел 1: Скачивание репозитория
Задачи 1.1–1.4: подготовка рабочего окружения. Выполняются один раз перед началом работы над моделями.
Задание 1.1: Клонирование репозитория
- Откройте терминал на вашем компьютере.
- Перейдите в директорию, куда вы хотите клонировать проект.
- Выполните команду для клонирования репозитория.
- Перейдите в директорию с клонированным проектом.
Задание 1.2: Установка зависимостей
- Создайте виртуальное окружение для проекта.
- Активируйте виртуальное окружение.
- Установите зависимости проекта из файла
requirements.txt.
Задание 1.3: Настройка базы данных
- Примените миграции для настройки базы данных.
- Заполните параметрами вашей базы данных приложенный файл
.env.
Задание 1.4: Запуск сервера разработки
- Запустите сервер разработки, чтобы убедиться, что проект настроен правильно.
- Откройте браузер и перейдите по адресу
http://127.0.0.1:8000, чтобы убедиться что проект работает.
Раздел 2: Создание моделей
Задачи 2.1–2.8: создайте модели Django в
models.py вашего приложения. После создания каждой группы моделей выполните python manage.py makemigrations и python manage.py migrate.
Задание 2.1: Создание модели Category
- Создайте модель
Categoryс полемname, которое:- Имеет максимальную длину 40 символов.
- Должно быть уникальным.
- Реализуйте метод
__str__, чтобы он возвращал значение поляname. - Добавьте мета-класс для модели:
- Установите сортировку по полю
nameв алфавитном порядке. - Установите множественное число для отображения модели как
categories.
- Установите сортировку по полю
Задание 2.2: Создание модели Supplier
- Создайте модель
Supplierс полями:name(максимальная длина 100 символов, уникальное значение).contact_email(уникальное значение).phone_number(максимальная длина 20 символов, уникальное значение).
- Реализуйте метод
__str__, чтобы он возвращал значение поляname.
Задание 2.3: Создание модели Product
- Создайте модель
Productс полями:name(максимальная длина 100 символов).category(внешний ключ на модельCategoryс поведениемPROTECTпри удалении и с названием обратной связиproducts).supplier(внешний ключ на модельSupplierс поведениемPROTECTпри удалении и с названием обратной связиproducts).price(десятичное поле с максимумом 10 цифр и 2 десятичными знаками).quantity(положительное целое число).article(максимальная длина 100 символов, уникальное значение, имеет пояснение"Unique string product id"и индекс).available(логическое поле с значением по умолчаниюTrue).
- Реализуйте метод
__str__, чтобы он возвращал значение поляname. - Добавьте мета-класс для модели:
- Установите сортировку по полям
categoryиquantityв алфавитном порядке.
- Установите сортировку по полям
Задание 2.4: Создание модели ProductDetail
- Создайте модель
ProductDetailс полями:product(один к одному внешний ключ на модельProductс поведениемCASCADEпри удалении и с названием обратной связиdetails).description(текстовое поле, может быть пустым и иметь значение null).manufacturing_date(дата, может быть пустой и иметь значение null).expiration_date(дата, может быть пустой и иметь значение null).weight(десятичное поле с максимумом 5 цифр и 2 десятичными знаками, может быть пустым и иметь значение null).
- Реализуйте метод
__str__, чтобы он возвращал строку"Details of {название продукта}".
Задание 2.5: Создание модели Address
- Создайте модель
Addressс полями:country(максимальная длина 100 символов).city(максимальная длина 100 символов).street(максимальная длина 255 символов).house(максимальная длина 6 символов).
- Реализуйте метод
__str__, чтобы он возвращал строку в формате"{street}, {house}". - Добавьте мета-класс для модели:
- Установите множественное число для отображения модели как
addresses.
- Установите множественное число для отображения модели как
Задание 2.6: Создание модели Customer
- Создайте модель
Customerс полями:first_name(максимальная длина 50 символов).last_name(максимальная длина 50 символов).email(уникальное значение).phone_number(максимальная длина 15 символов).address(один к одному внешний ключ на модельAddress, может быть пустым, с поведениемSET_NULLпри удалении и с названием обратной связиcustomer).date_joined(дата и время, устанавливаемые автоматически при создании записи).deleted(логическое поле с значением по умолчаниюFalse).deleted_at(дата и время, может быть пустым и иметь значение null).
- Реализуйте метод
__str__, чтобы он возвращал строку в формате"{first_name} {last_name}". - Добавьте мета-классы для модели:
- Установите сортировку по полю
date_joinedв порядке от самых новых записей к самым старым. - Установите поле
date_joinedкак используемое для получения последней записи.
- Установите сортировку по полю
Задание 2.7: Создание модели Order
- Создайте модель
Orderс полями:order_date(дата и время, устанавливаемые автоматически при создании записи).customer(внешний ключ на модельCustomerс поведениемPROTECTпри удалении и с названием обратной связиorders).
- Реализуйте метод
__str__, чтобы он возвращал строку в формате"Order {id} by {customer}". - Добавьте мета-классы для модели:
- Установите сортировку по полю
order_dateв порядке от самых новых записей к самым старым. - Установите поле
order_dateкак используемое для получения последней записи.
- Установите сортировку по полю
Задание 2.8: Создание модели OrderItem
- Создайте модель
OrderItemс полями:order(внешний ключ на модельOrderс поведениемCASCADEпри удалении и с названием обратной связиorder_items).product(внешний ключ на модельProductс поведениемPROTECTпри удалении и с названием обратной связиorder_items).quantity(положительное целое число).price(десятичное поле с максимумом 10 цифр и 2 десятичными знаками).
- Реализуйте метод
__str__, чтобы он возвращал строку в формате"{quantity} x {product} for {order}".
Раздел 3: Создание Admin-моделей
Задачи 3.0–3.6: настройка отображения моделей в Django Admin. Код помещается в
admin.py вашего приложения.
Задание 3.0: Импорт моделей
Импортируйте в admin.py все модели.
Задание 3.1: Настройка модели Category в Admin
- Зарегистрируйте модель
Categoryв Admin с использованием декоратора@admin.register. - Создайте класс
CategoryAdmin, чтобы настроить отображение модели:- Установите отображение поля
nameв списке записей. - Добавьте возможность поиска по полю
name. - Установите сортировку записей по полю
nameв алфавитном порядке.
- Установите отображение поля
Задание 3.2: Настройка модели Supplier в Admin
- Зарегистрируйте модель
Supplierв Admin с использованием декоратора@admin.register. - Создайте класс
SupplierAdmin:- Установите отображение полей
name,contact_email,phone_numberв списке записей. - Добавьте возможность поиска по полям
name,contact_emailиphone_number. - Установите сортировку записей по полю
nameв алфавитном порядке.
- Установите отображение полей
Задание 3.3: Настройка модели Product в Admin
- Зарегистрируйте модель
Productв Admin с использованием декоратора@admin.register. - Создайте класс
ProductAdmin:- Установите отображение полей
name,category,supplier,price,quantity,article,availableв списке записей. - Добавьте фильтрацию записей по полям
category,supplierиavailable. - Добавьте возможность поиска по полям
nameиarticle. - Установите сортировку записей по полям
categoryиquantityв алфавитном порядке. - Сделайте поля
price,quantityиavailableредактируемыми прямо в списке записей.
- Установите отображение полей
Задание 3.4: Настройка модели Address в Admin
- Зарегистрируйте модель
Addressв Admin с использованием декоратора@admin.register. - Создайте класс
AddressAdmin:- Установите отображение полей
country,city,street,houseв списке записей. - Добавьте возможность поиска по полям
country,city,streetиhouse. - Установите сортировку записей по полям
country,cityиstreetв алфавитном порядке.
- Установите отображение полей
Задание 3.5: Настройка модели Customer в Admin
- Зарегистрируйте модель
Customerв Admin с использованием декоратора@admin.register. - Создайте класс
CustomerAdmin:- Установите отображение полей
first_name,last_name,email,phone_number,date_joined,deletedв списке записей. - Добавьте возможность поиска по полям
first_name,last_name,email,phone_number. - Установите сортировку записей по полю
date_joinedв порядке от самых новых записей к самым старым. - Добавьте фильтрацию записей по полю
deleted. - Сделайте поле
deletedредактируемым прямо в списке записей.
- Установите отображение полей
Задание 3.6: Настройка модели Order в Admin
- Зарегистрируйте модель
Orderв Admin с использованием декоратора@admin.register. - Создайте класс
OrderAdmin:- Установите отображение полей
id,order_date,customerв списке записей. - Добавьте возможность поиска по полям
customer__first_name,customer__last_nameиcustomer__email. - Установите сортировку записей по полю
order_dateв порядке от самых новых заказов к самым старым.
- Установите отображение полей