## Модель имущества 1. **GoodsType:** - `name`(CharField): Название типа имущества. 2. **ConsumableType:** - `name`(CharField): Название типа расходуемых ТМЦ. 3. **Goods:** - **`goods_type`** (ForeignKey): Связь с типом имущества (`GoodsType`). - **`goods_name`** (CharField): Название имущества. - **`inventory_number`** (CharField): Инвентарный номер имущества. - **`description`** (TextField): Описание имущества. - **`goods_photo`** (ManyToManyField): Фотографии имущества (связь с моделью `ImageGoods`). - **`condition_description`** (TextField): Описание состояния имущества. - **`damage_date_time`** (DateTimeField): Дата и время обнаружения порчи. - **`related_object`** (ForeignKey): Связь с объектом (`Object`), к которому относится имущество. - **`responsible_person`** (CharField): Ответственное лицо за имущество. - **`status`** (CharField): Статус состояния имущества (`good` - хорошее, `damaged` - поврежденное). 4. **Consumable:** - **`consumable_type`** (ForeignKey): Связь с типом расходуемых ТМЦ (`ConsumableType`). - **`name`** (CharField): Название расходуемого товара. - **`description`** (TextField): Описание товара. - **`consumable_photo`** (ManyToManyField): Фотографии товара (связь с моделью `ImageGoods`). - **`quantity`** (PositiveIntegerField): Количество товара. - **`quantity_unit`** (CharField): Единица измерения количества (выбор из предопределенных вариантов, например, шт., кг, л и т. д.). - **`related_object`** (ForeignKey): Связь с объектом (`Object`), к которому относится товар. - **`responsible_person`** (CharField): Ответственное лицо за товар. ## Сериализатор 1. **GoodsTypeSerializer:** - `id` (IntegerField): Идентификатор типа имущества. - `goodsTypeName` (CharField): Название типа имущества. - `author` (SerializerMethodField): Автор типа имущества (сериализатор `AuthorSerializer`). - `createdAt` (DateTimeField): Дата и время создания типа имущества. - `updatedAt` (DateTimeField): Дата и время последнего обновления типа имущества. 2. **ConsumableTypeSerializer:** - `id` (IntegerField): Идентификатор типа расходуемых ТМЦ. - `consumableTypeName` (CharField): Название типа расходуемых ТМЦ. - `author` (SerializerMethodField): Автор типа расходуемых ТМЦ (сериализатор `AuthorSerializer`). - `createdAt` (DateTimeField): Дата и время создания типа расходуемых ТМЦ. - `updatedAt` (DateTimeField): Дата и время последнего обновления типа расходуемых ТМЦ. 3. **GoodsSerializer:** - `id` (IntegerField): Идентификатор имущества. - `goods_type` (GoodsTypeSerializer): Тип имущества. - `goodsName` (CharField): Название имущества. - `goodsInventoryNumber` (CharField): Инвентарный номер имущества. - `goodsDescription` (TextField): Описание имущества. - `goodsPhoto` (ManyToManyField): Фотография имущества. - `goodsConditionDescription` (TextField): Описание состояния имущества. - `goodsDamageDateTime` (DateTimeField): Дата и время обнаружения повреждения имущества. - `goodsRelatedObject` (ForeignKey): Объект, к которому относится имущество. - `goodsResponsiblePerson` (CharField): Ответственное лицо за имущество. - `goodsStatus` (CharField): Статус имущества. - `author` (SerializerMethodField): Автор имущества (сериализатор `AuthorSerializer`). - `createdAt` (DateTimeField): Дата и время создания имущества. - `updatedAt` (DateTimeField): Дата и время последнего обновления имущества. 4. **ConsumableSerializer:** - `id` (IntegerField): Идентификатор расходуемого товара. - `consumable_type` (ConsumableTypeSerializer): Тип расходуемого товара. - `consumableName` (CharField): Название расходуемого товара. - `consumableDescription` (TextField): Описание расходуемого товара. - `consumablePhoto` (ManyToManyField): Фотография расходуемого товара. - `consumableQuantity` (PositiveIntegerField): Количество расходуемого товара. - `consumableQuantityUnit` (CharField): Единица измерения количества товара. - `consumableRelatedObject` (ForeignKey): Объект, к которому относится товар. - `consumableResponsiblePerson` (CharField): Ответственное лицо за товар. - `author` (SerializerMethodField): Автор расходуемого товара (сериализатор `AuthorSerializer`). - `createdAt` (DateTimeField): Дата и время создания расходуемого товара. - `updatedAt` (DateTimeField): Дата и время последнего обновления расходуемого товара. ## Маршрутизатор 1. `router.register('goods', GoodsView, basename='goods')`: Регистрация представления `GoodsView` в маршрутизаторе под именем `'goods'`, с указанием базового имени `'goods'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) имущества. 2. `router.register('goods-types', GoodsTypeView, basename='goods-types')`: Регистрация представления `GoodsTypeView` в маршрутизаторе под именем `'goods-types'`, с указанием базового имени `'goods-types'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) типов имущества. 3. `router.register('consumable-types', ConsumableTypeView, basename='consumable-types')`: Регистрация представления `ConsumableTypeView` в маршрутизаторе под именем `'consumable-types'`, с указанием базового имени `'consumable-types'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) типов расходуемых товаров. 4. `router.register('consumable', ConsumableView, basename='consumable')`: Регистрация представления `ConsumableView` в маршрутизаторе под именем `'consumable'`, с указанием базового имени `'consumable'`. Это создаст URL-адреса для операций CRUD (создание, чтение, обновление, удаление) расходуемых товаров. ## Контроллер 1. **GoodsView:** - **Описание:** Это представление, использующее `ModelViewSet`, обрабатывает операции CRUD для имущества. - **Методы:** - **`list`:** Возвращает список имущества. - **`create`:** Создает новое имущество. - **`retrieve`:** Возвращает конкретное имущество по его идентификатору. - **`update`:** Обновляет существующее имущество. - **`destroy`:** Удаляет имущество. - **Права доступа:** Только аутентифицированные пользователи имеют доступ к этим методам. 2. **GoodsTypeView:** - **Описание:** Это представление, также использующее `ModelViewSet`, для операций CRUD с типами имущества. - **Методы:** - **`list`:** Возвращает список типов имущества. - **`create`:** Создает новый тип имущества. - `**destroy`:** Удаляет тип имущества. - **Права доступа:** Только аутентифицированные пользователи могут выполнять действия с типами имущества. 3. **ConsumableTypeView:** - **Описание:** Представление для операций CRUD с типами расходуемых товаров. - **Методы:** - **`list`:** Возвращает список типов расходуемых товаров. - `**create`:** Создает новый тип расходуемого товара. - **`destroy`:** Удаляет тип расходуемого товара. - **Права доступа:** Только аутентифицированные пользователи имеют доступ к этим методам. 4. **ConsumableView:** - **Описание:** Представление для операций CRUD с расходуемыми товарами. - **Методы:** - **`list`:** Возвращает список расходуемых товаров. - **`create`:** Создает новый расходуемый товар. - **`destroy`:** Удаляет расходуемый товар. - **Права доступа:** Только аутентифицированные пользователи могут управлять расходуемыми товарами.