## Модель имущества 1. **GoodsType:** - `name`: Название типа имущества. 2. **ConsumableType:** - `name`: Название типа расходуемых ТМЦ. 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. **AuthorSerializer:** - `username`: Имя пользователя. - `bio`: Биография пользователя. - `image`: Изображение пользователя. - `following`: Подписка пользователя (булево значение). 2. **GoodsTypeSerializer:** - `id`: Идентификатор типа имущества. - `goodsTypeName`: Название типа имущества. - `author`: Автор типа имущества (сериализатор `AuthorSerializer`). - `createdAt`: Дата и время создания типа имущества. - `updatedAt`: Дата и время последнего обновления типа имущества. 3. **ConsumableTypeSerializer:** - `id`: Идентификатор типа расходуемых ТМЦ. - `consumableTypeName`: Название типа расходуемых ТМЦ. - `author`: Автор типа расходуемых ТМЦ (сериализатор `AuthorSerializer`). - `createdAt`: Дата и время создания типа расходуемых ТМЦ. - `updatedAt`: Дата и время последнего обновления типа расходуемых ТМЦ. 4. **GoodsSerializer:** - `id`: Идентификатор имущества. - `goods_type`: Тип имущества. - `goodsName`: Название имущества. - `goodsInventoryNumber`: Инвентарный номер имущества. - `goodsDescription`: Описание имущества. - `goodsPhoto`: Фотография имущества. - `goodsConditionDescription`: Описание состояния имущества. - `goodsDamageDateTime`: Дата и время обнаружения повреждения имущества. - `goodsRelatedObject`: Объект, к которому относится имущество. - `goodsResponsiblePerson`: Ответственное лицо за имущество. - `goodsStatus`: Статус имущества. - `author`: Автор имущества (сериализатор `AuthorSerializer`). - `createdAt`: Дата и время создания имущества. - `updatedAt`: Дата и время последнего обновления имущества. 5. **ConsumableSerializer:** - `id`: Идентификатор расходуемого товара. - `consumable_type`: Тип расходуемого товара. - `consumableName`: Название расходуемого товара. - `consumableDescription`: Описание расходуемого товара. - `consumablePhoto`: Фотография расходуемого товара. - `consumableQuantity`: Количество расходуемого товара. - `consumableQuantityUnit`: Единица измерения количества товара. - `consumableRelatedObject`: Объект, к которому относится товар. - `consumableResponsiblePerson`: Ответственное лицо за товар. - `author`: Автор расходуемого товара (сериализатор `AuthorSerializer`). - `createdAt`: Дата и время создания расходуемого товара. - `updatedAt`: Дата и время последнего обновления расходуемого товара. ## Маршрутизатор 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:** Удаляет расходуемый товар. - **Права доступа:** Только аутентифицированные пользователи могут управлять расходуемыми товарами.