Skillfactory Practice Module D2
Проект NewsPaper. Итоговое задание
В ходе этого модуля вы шаг за шагом изучали принципы построения баз данных и создания моделей, а также размышляли над собственным приложением NewsPaper. Итоговое задание этого модуля заключается в создании этого приложения (пока что только моделей).
Что в нём должно быть?
Модель Author, содержащая объекты всех авторов. Имеет следующие поля: cвязь «один к одному» с встроенной моделью пользователей User; рейтинг пользователя. Ниже будет дано описание того, как этот рейтинг можно посчитать. Модель Category Категории новостей/статей — темы, которые они отражают (спорт, политика, образование и т. д.). Имеет единственное поле: название категории. Поле должно быть уникальным (в определении поля необходимо написать параметр unique = True). Модель Post Эта модель должна содержать в себе статьи и новости, которые создают пользователи. Каждый объект может иметь одну или несколько категорий. Соответственно, модель должна включать следующие поля: связь «один ко многим» с моделью Author; поле с выбором — «статья» или «новость»; автоматически добавляемая дата и время создания; связь «многие ко многим» с моделью Category (с дополнительной моделью PostCategory); заголовок статьи/новости; текст статьи/новости; рейтинг статьи/новости. Модель PostCategory Промежуточная модель для связи «многие ко многим»: связь «один ко многим» с моделью Post; связь «один ко многим» с моделью Category. Модель Comment Под каждой новостью/статьёй можно оставлять комментарии, поэтому необходимо организовать их способ хранения тоже. Модель будет иметь следующие поля: связь «один ко многим» с моделью Post; связь «один ко многим» со встроенной моделью User (комментарии может оставить любой пользователь, необязательно автор); текст комментария; дата и время создания комментария; рейтинг комментария.
Эти модели должны также реализовать методы:
Методы like() и dislike() в моделях Comment и Post, которые увеличивают/уменьшают рейтинг на единицу. Метод preview() модели Post, который возвращает начало статьи (предварительный просмотр) длиной 124 символа и добавляет многоточие в конце. Метод update_rating() модели Author, который обновляет рейтинг пользователя, переданный в аргумент этого метода. Он состоит из следующего: суммарный рейтинг каждой статьи автора умножается на 3; суммарный рейтинг всех комментариев автора; суммарный рейтинг всех комментариев к статьям автора.
В качестве результата задания подготовьте файл, в котором напишете список всех команд, запускаемых в Django shell.