Экзамен.
По аналогии с прошлыми шагами данного модуля, реализуйте конечные точки отзывов о товаре.
Примерный вид модели отзыва:
id: Числовое поле, являющееся первичным ключом.user_id: Поле связи с таблицей пользователей.product_id: Поле связи с таблицей товара.rating_id: Поле связи с таблицей рейтингаcomment: Текстовое поле отзыва о товаре.comment_date: Поле даты отзыва, по умолчанию заполняется автоматически.is_active: Булево поле, по умолчанию True.
Примерный вид модели рейтинга:
id: Числовое поле, являющееся первичным ключом.grade: Числовое поле оценки товара.user_id: Поле связи с таблицей пользователей.product_id: Поле связи с таблицей товара.is_active: Булево поле, по умолчанию True.
Конечные точки:
- all_reviews - Метод получения всех отзывов и рейтингов о товарах. Разрешен доступ всем.
- products_reviews - Метод получения отзывов и его рейтингов об определенном товаре. Разрешен доступ всем.
- add_review - Метод добавления отзыва и рейтинга об определенном товаре. Разрешен доступ только пользователям. В результате добавления отзыва, рейтинг товара должен быть пересчитан (поле rating модели Product)
- delete_reviews - Метод удаления отзыва и рейтинга об определенном товаре. Доступ разрешен только администратору. При удалении поле is_active должно изменяться на False для отзыва и рейтинга.
Простыми словами. Покупатель оставляет отзыв о товаре и ставит оценку, этот отзыв и оценка записывается в БД, например в таблицы Reviews и Ratings. После записи оценки, мы делаем выборку по всей таблице Ratings с выборкой нужного товара(о котором отставили отзыв), считаем среднюю оценку и записываем её в поле rating таблицы Products. Такая реализация сделана для того, чтобы не считать каждый раз рейтинг товара, а считать его, только при изменении(когда оставили отзыв).
-
Напишите ответ
Loading...Rich Text Editor, editor_ember3271Editor toolbarsElements path -
Отправьте лучшее решение на проверку
- Дождитесь оценки преподавателя, максимум за задачу — 30 баллов