- Авторизация, регистрация.
- Поиск по сайту по различным критериям (фильтры ,поисковая строка). Использование ajax_select для автодополнения после введенных 3 символов в поисковой строке.
- Корзина (добавление, удаление, изменение количества товара) и оформление заказа.
- mainapp.models -> CartProduct (продукт корзины) реализован для любого типа товара (с использованием ContentType). Для добавлений новых моделей товара в дальнейшем.
- Личный кабинет с возможностью отслеживать свои заказы и просматривать детальную информацию о них.
- Возможность добавления и удаления в личном кабинете товара в "лист ожидания".
- Отправка уведомлений пользователю о том, что товар, находящийся в списке его ожидания поступил (сигналы: mainapp.models -> check_previous_qty(pre_save), send_notification(post_save).
- Возможность отслеживания наличия товара и бизнес-логика, не позволяющая заказывать товар, если его нет в наличии или за время формирования заказа уже кто-то забрал последнее.
- Возможность создавать галерею изображений как для исполнителя, так и для конкретного альбома (галерея изображений + ContentType).
- TabularInline и GenericTabularInline в админке для удобства добавления изображений.
- RAW SQL запросы для получения наиболее продаваемого альбома месяца (mainapp.models -> AlbumManager)
- Использование crispy_forms и crispy_bootstrap5 для удобства работы с forms
- В mainapp.forms -> SearchForm для формирования choices мы делаем встроенный Model.objects.querry() до миграции, таким образом ловим ошибку, и не можем осуществить migrate т.к таблиц еще не существует. Для избежания этого мы применяем конструкцию.
from django.db import connection
Model.objects.query if connection.introspection.table_names() else []
- docker-compose up -d (запуск postgres в фоновом режиме)
- pip install -r requirements.txt
- cd store && python manage.py makemigrations
- python manage.py migrate
- python manage.py collectstatic
- python manage.py createsuperuser (создаем суперпользователя)
- python manage.py runserver