Категории и подкатегории описаны, двигаюсь дальше. А что дальше?! Создадим модель "Product" и связанные с ней дочерние классы. Как сказал куратор - изучайте swagger и по ней делайте. Итак, что написано в swagger касаемо модели Product:
Видя все эти имена полей можно предположить какие будут поля у модели "Product", но не все будет располагаться именно в этом классе, что-то будет ссылаться на другие модели. Вот например вторая строка "category" своим именем намекает на то что продукт будет относиться к какой-то категории, у категории есть еще подкатегории. Значит это должно быть нечто подобное:
с полями price, count, date, title, description вроде бы все примерно понятно, это все как в учебных материалах:
Далее идет поле fullDescription, но это скорее всего уже реализовано на стороне фронтэнда, и получается из description два варианта: shortDescription и fullDescription.
Поле images - список словарей (тут я задумался)...
Когда у нас одна картинка (скажем preview) связанная с продуктом, то тогда поле, свзяанное с картинкой находится в в классе Product, а если у продукта много картинок то создается уже новый класс ProductImage с этими картинками. А в классе Product будет находиться метод получения этих самых картинок
Упс, забыл поле "freeDelivery", тут тоже все просто, доставка может быть либо бесплатная, либо нет, поэтому тип boolean
freeDelivery = models.BooleanField(default=True) # скажем, досатвка пусть будет по-умолчанию бесплатной.
Далее - тэги, так как у продукта может быть много тэгов, то и у тэга может быть множество продуктов это уже будет поле "мэни ту мэни":
Ну и соответственно нужно создать класс Тег, он должен быть объявлен до объявления (то есть выше) класса Product
Остаются три поля reviews, specification и rating...
Класс Review будет отвечать за оставленные пользователями отзывы о товаре, с комментариями, оценкой товара (плюс дата создания отзыва, кто создал отзыв, его email). Как-то так:
Ну и последний класс, связанный с моделью Product - Specification, судя по значениям в словарях, он будет отвечать за такие значения как допустим по камим параметрам измеряется одежда - размер, ну и таблица размеров. У разных товаров это может быть разные параметры. Скажем, если это какая то электроника, то это может быть напряжение питания и варианты этого питания.
Ну и последнее поле в классе Product - rating:
Вроде бы все поля по порядку расположил (как в swagger)...
Можно теперь попробовать сделать makemigrations и migrate и посмотрим что из этого получится...
Так как я до этого уже начинал писать модель Product и уже делал какие-то миграции, у меня получились конфликты в данном приложении. Поэтому решил что надо удалить все миграции сделанные для данного (shopapp) приложения и создать заново. Благо, это делается просто:
python manage.py migrate shopapp zero
Ну и делаю заново makemigrations:
Ну и пробуем migrate:
Пока всё идет как надо, но дальнейшая эксплуатация покажет - правильно ли сделал модель Product и все что с ней связано...
Да, картинка красивая... Вот: