## Модель статьи 1. **TimeStampedModel:** - Абстрактная базовая модель для добавления автора, полей времени создания и изменения к другим моделям. - `created_at`: Дата и время создания объекта. - `updated_at`: Дата и время последнего обновления объекта. - `author`: Автор объекта. - `file_name`: Имя файла объекта. - Метод `save`: Переопределен для автоматической установки даты создания и обновления. - Метод `generate_file_url`: Генерирует URL файла. 2. **Images:** - Модель файлов изображений. - `file`: Поле для загрузки изображения. - `history`: Поле для хранения истории изменений. - Метод `save`: Дополнительно устанавливает имя файла с префиксом "Image_". - Метод `clean`: Проверяет допустимость формата изображения. 3. **Videos:** - Модель файлов видео. - `file`: Поле для загрузки видео. - `history`: Поле для хранения истории изменений. - Метод `save`: Дополнительно устанавливает имя файла с префиксом "Video_". 4. **OtherFiles:** - Модель файлов всех типов документов. - `file`: Поле для загрузки документа. - `history`: Поле для хранения истории изменений. - Метод `save`: Дополнительно устанавливает имя файла с префиксом "Document_". ## Валидатор данных 1. **validate_max_file_size:** - Проверяет, что размер загружаемого файла не превышает максимально допустимый размер. - `value`: Параметр, представляющий объект файла. - `max_size`: Максимальный размер файла в байтах (здесь установлен на 200 МБ). - Если размер файла больше `max_size`, вызывается исключение `ValidationError` с соответствующим сообщением об ошибке. ## Сериализатор ## Маршрутизатор ## Контроллер