Музыкальный магазин на django с регистрацией, авторизацией, корзиной, поиском, личным кабинетом, возможностью формировать/оформлять заказ, отслеживать автоматически наличие интересующего товара.
Базавое приложение музыкального магазина на django 3
Функционал
Авторизация, регистрация.
Поиск по сайту по различным критериям (фильтры ,поисковая строка). Использование 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 в фоновом режиме)