# 仓库类型 (WarehouseTypeEnum) 本文档描述了 `basic_info` 模块中 `WareHouse` 模型的 `type` 字段及其枚举值。 ## 功能说明 仓库类型字段 (`type`) 用于区分仓库的类别,目前支持两种类型: - **整仓**: 存储完整的、未分割的货物 - **散仓**: 存储零散的、分割后的货物 ## 枚举值 ### WarehouseTypeEnum | 值 (Integer) | 名称 (String) | 描述 | |--------------|---------------|------| | `1` | `整仓` | 默认值,用于存储整卷/整件货物 | | `2` | `散仓` | 用于存储散卷/拆分后的货物 | ## 模型定义 ```python class WarehouseTypeEnum(models.IntegerChoices): """仓库类别枚举""" WHOLE = 1, '整仓' SCATTERED = 2, '散仓' class WareHouse(ModelBase): # ... type = models.IntegerField( choices=WarehouseTypeEnum.choices, default=WarehouseTypeEnum.WHOLE, verbose_name='仓库类别', ) # ... ``` ## API 使用 ### 创建仓库 **端点**: `POST /api/backend/warehouses/` **请求体示例**: ```json { "name": "主仓库", "type": 1, "location": "工厂一楼", "area": "广州", "mode": 1 } ``` **参数说明**: - `type`: 仓库类型,可选值:`1` (整仓) 或 `2` (散仓),默认为 `1` ### 列表查询 **端点**: `GET /api/backend/warehouses/` **响应示例**: ```json { "results": [ { "id": 1, "name": "主仓库", "type": 1, "location": "工厂一楼", "mode": 1, "area": "广州" }, { "id": 2, "name": "散货仓", "type": 2, "location": "工厂二楼", "mode": 1, "area": "广州" } ] } ``` ### 更新仓库 **端点**: `PATCH /api/backend/warehouses/{id}/` **请求体示例**: ```json { "type": 2 } ``` ## Admin 界面 在 Django Admin 界面中: - **列表页**: `type` 字段显示在列表中,并可用于筛选 - **编辑页**: `type` 字段显示为下拉选择框 - **显示文本**: 使用中文标签(整仓/散仓) ### Admin 配置 - `list_display` 包含 `type` 字段 - `list_filter` 包含 `type` 字段,方便按类型筛选 ## 注意事项 1. **默认值**: 创建仓库时,如果未指定 `type`,默认为 `1`(整仓) 2. **验证**: `type` 字段只接受 `1` 或 `2` 两个值 3. **兼容性**: 现有仓库记录在迁移后将自动设置为默认值(整仓) 4. **扩展性**: 如需添加新的仓库类型,可在 `WarehouseTypeEnum` 中添加新枚举值 ## 数据库迁移 新字段通过以下迁移添加: - 迁移文件: `basic_info/migrations/0010_warehouse_type.py` - 字段: `type` (IntegerField) - 默认值: `1` (整仓) ## 测试覆盖 测试文件包括: - **模型测试**: `basic_info/tests.py` - 测试字段默认值、枚举值等 - **API 测试**: `api_man/tests.py` - 测试 CRUD 操作和 API 返回值 运行测试: ```bash # 测试模型 uv run python manage.py test basic_info.tests.WarehouseTypeTestCase # 测试 API uv run python manage.py test api_man.tests.WarehouseAPITestCase ```