5.14 Экзамен
0 из 1 шага пройдено
0 из 30 баллов  получено

Экзамен.

По аналогии с прошлыми шагами данного модуля, реализуйте конечные точки отзывов о товаре.

Примерный вид модели отзыва:

  • 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. Такая реализация сделана для того, чтобы не считать каждый раз рейтинг товара, а считать его, только при изменении(когда оставили отзыв).

Чтобы решить это задание откройте

Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.