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