## Модель статьи 1.1. **`author`** (ForeignKey): Связывает поле с моделью пользователя, который создал статью. 2. **`title`** (CharField): Название статьи. 3. **`summary`** (TextField): Краткое описание статьи. 4. **`content`** (TextField): Полное содержание статьи. 5. **`created`** (DateTimeField): Дата и время создания статьи. 6. **`updated`** (DateTimeField): Дата и время последнего обновления статьи. 7. **`tags`** (TaggableManager): Поле для управления тегами, используется для категоризации статей. 8. **`favorites`** (ManyToManyField): Связь многие ко многим с моделью пользователя, используется для отслеживания избранных статей пользователей. 9. `**slug**` (SlugField): Уникальный идентификатор для URL статьи, генерируется автоматически на основе названия статьи. ## Сериализатор 1. **ArticleSerializer**: - Сериализатор для модели статей (Article). - Поля: `slug`, `title`, `description`, `body`, `tagList`, `createdAt`, `updatedAt`, `favorited`, `favoritesCount`, `author`. - `TaggitSerializer`: Используется для сериализации тегов статьи. - Методы: `get_author`, `get_favorited`, `get_favoritesCount`, `create`, `update`. ## Маршрутизатор - **`article_router.register('articles', views.ArticleView, basename='articles')`**: Регистрация маршрута для представления `ArticleView` из `views.py` под именем 'articles'. `basename='articles'` указывает базовое имя для ссылок. ## Контроллер 1. ArticleView: - Представление для работы с моделью статей. - Использует `ModelViewSet`, который предоставляет CRUD-функциональность и многое другое. - Включает методы `list`, `create`, `retrieve`, `update`, `destroy` для обработки соответствующих HTTP-запросов. - Содержит дополнительные действия (`favorite`, `feed`) с использованием декоратора `@action`. - `get_permissions`: Определяет разрешения для доступа к методам на основе типа действия. - `list`: Получает список всех статей. - `create`: Создает новую статью. - `favorite`: Добавляет или удаляет статью из избранного. - `feed`: Возвращает ленту статей для текущего пользователя. - `retrieve`: Получает информацию о конкретной статье. - `update`: Обновляет информацию о конкретной статье. - `destroy`: Удаляет конкретную статью.