dfs_main = dfs[['charge', 'discharge', 'impendance']] TypeError: unhashable type: 'list'
时间: 2024-01-24 10:02:56 浏览: 24
这个错误通常是因为你正在尝试使用一个不可哈希的类型作为字典的键或集合的元素。在这种情况下,你尝试将一个列表作为键传递给 `dfs_main` 字典,但是列表是不可哈希的,因此会引发 `TypeError` 错误。
你可以尝试将列表转换为元组,因为元组是可哈希的类型,例如将 `dfs[['charge', 'discharge', 'impendance']]` 改为 `dfs[('charge', 'discharge', 'impendance')]`。这应该解决这个错误。
相关问题
def write(self, vals): audit = self.env['approval.flow'].search([('approval_cannot_run_id', '=', '修改')]) value_list = list(vals.keys()) receive_list = [] value_list_not_in_receive_list = [i for i in value_list if i not in receive_list] value_list = value_list_not_in_receive_list # 应付 dispatch_number = 0 dispatch_id = self.env['roke.dispatch.order.management.price.approve'].search([('order_id.id', '=', self.id)]) dispatch_list = ['value03', 'value04', 'value05', 'value06', 'value07', 'value08'] if dispatch_id: for rec in value_list: for dispatch_list_id in dispatch_list: if rec == dispatch_list_id: if dispatch_id.approval_status != '未提' and dispatch_id.approval_status != '驳回': raise UserError("应付费用已开始审核不允许修改") value_list_not_in_dispatch_list = [i for i in value_list if i not in dispatch_list] value_list = value_list_not_in_dispatch_list dispatch_number = 1 break if dispatch_number: break # 基础 base_number = 0 base_list = ['client', 'department_manager', 'box_number', 'shipping_companies', 'field_station', 'ship_name_voyage', 'port_of_discharge', 'box_type', 'code', 'bill__of_lading_number', 'departure_date', 'lead_sealing', 'booking_time', 'date_of_pick_up', 'encore_date', 'set_port_date', 'estimated_range', 'destination_port_arrival_time'] if value_list: for rec in value_list: for base_list_id in base_list: if rec == base_list_id: if dispatch_id: if dispatch_id.approval_status != '未提' and dispatch_id.approval_status != '驳回': raise UserError("应付费用已开始审核不允许修改") base_number = 1 break if base_number: break return super(Rokedispatchordermanagement, self).write(vals) audit审核完成如果是修改不能修改如果不是可以修改怎么写可以实现
在给定的代码中,如果修改的字段包含“应付费用”字段,则需要检查“roke.dispatch.order.management.price.approve”模型中的“approval_status”字段,如果不是“未提”或“驳回”,则不能进行修改,否则可以进行修改。如果修改的字段不包含“应付费用”字段,则需要检查是否存在“roke.dispatch.order.management.price.approve”模型,如果存在,则需要检查“approval_status”字段是否为“未提”或“驳回”,如果不是,则不能进行修改,否则可以进行修改。如果不存在“roke.dispatch.order.management.price.approve”模型,则可以直接进行修改。因此,可以在代码中加入以下内容来实现这个逻辑:
```
# 判断是否需要进行审核
if '应付费用' in vals:
dispatch_id = self.env['roke.dispatch.order.management.price.approve'].search([('order_id.id', '=', self.id)])
if dispatch_id and (dispatch_id.approval_status != '未提' and dispatch_id.approval_status != '驳回'):
raise UserError("应付费用已开始审核不允许修改")
else:
dispatch_id = self.env['roke.dispatch.order.management.price.approve'].search([('order_id.id', '=', self.id)])
if dispatch_id and (dispatch_id.approval_status != '未提' and dispatch_id.approval_status != '驳回'):
raise UserError("应付费用已开始审核不允许修改")
elif not dispatch_id:
# 可以直接进行修改
return super(Rokedispatchordermanagement, self).write(vals)
```
以上代码可以放在`write`方法中的`value_list = value_list_not_in_dispatch_list`和`return`之间,以实现对修改的限制。
帮我把下列代码的case后内容和 “nStepMode =” 后的内容进行调换 switch (nThirdStepMode) { case PM_UNKNOWN_MODE: { // 无法识别的第三方工步号 return false; } break; case PM_STEP_REST: { nStepMode = WORK_HOLD; } break; case PM_STEP_RANDOM_REST: { nStepMode = WORK_HOLD_RANDOM; } break; case PM_STEP_SYN_SUSPEND: { // 无法识别的第三方工步号 return false; } break; case PM_STEP_PAUSE: { nStepMode = WORK_PAUSE; } break; case PM_STEP_STOP_X: { // 无法识别的第三方工步号 return false; } break; case PM_CONST_POWER_CHARGE: { nStepMode = WORK_CP; } break; case PM_CONST_POWER_DISCHARGE: { nStepMode = WORK_DP; } break; case PM_CONST_RESISTANCE_CHARGE: { nStepMode = WORK_CR; } break; case PM_CONST_RESISTANCE_DISCHARGE: { nStepMode = WORK_DR; } break; case PM_STEP_INCUBATOR_LINK: { // TODO:处理 温箱联动 return false; } break; case PM_CONST_CURRENT_CHARGE: { nStepMode = WORK_CC; } break; case PM_CONST_CURRENT_DISCHARGE: { nStepMode = WORK_DC; } break; case PM_STEP_C_RATE_CHARGE: { nStepMode = WORK_CRATE; } break; case PM_STEP_C_RATE_DISCHARGE: { nStepMode = WORK_DRATE; } break; case PM_STEP_CCCV_CHARGE: // carefully! { nStepMode = WORK_CCCV; } break; case PM_STEP_CCCV_DISCHARGE: // carefully! { nStepMode = WORK_DCDV; } break; case PM_CONST_VOLT_CHARGE: { nStepMode = WORK_CV; } break; case PM_CONST_VOLT_DISCHARGE: // support lmtPara from V7206 { nStepMode = WORK_DV; } break; case PM_STEP_RATE_CV_CHARGE: { nStepMode = WORK_CRATECV; } break; case PM_STEP_RATE_CV_DISCHARGE: { nStepMode = WORK_DRATEDV; } break; case PM_STEP_CPCV_CHARGE: { nStepMode = WORK_CPCV; } break; case PM_STEP_CPCV_DISCHARGE: { nStepMode = WORK_DPDV; } break; case PM_STEP_LOOP: { nStepMode = WORK_WHILE; } break; default: { // 无法识别的第三方工步号 return false; } break; }
调换后的代码如下所示:
```
switch (nThirdStepMode) {
case PM_UNKNOWN_MODE:
// 无法识别的第三方工步号
return false;
break;
case PM_STEP_REST:
nStepMode = WORK_HOLD;
break;
case PM_STEP_RANDOM_REST:
nStepMode = WORK_HOLD_RANDOM;
break;
case PM_STEP_SYN_SUSPEND:
// 无法识别的第三方工步号
return false;
break;
case PM_STEP_PAUSE:
nStepMode = WORK_PAUSE;
break;
case PM_STEP_STOP_X:
// 无法识别的第三方工步号
return false;
break;
case PM_CONST_POWER_CHARGE:
nStepMode = WORK_CP;
break;
case PM_CONST_POWER_DISCHARGE:
nStepMode = WORK_DP;
break;
case PM_CONST_RESISTANCE_CHARGE:
nStepMode = WORK_CR;
break;
case PM_CONST_RESISTANCE_DISCHARGE:
nStepMode = WORK_DR;
break;
case PM_STEP_INCUBATOR_LINK:
// TODO:处理 温箱联动
return false;
break;
case PM_CONST_CURRENT_CHARGE:
nStepMode = WORK_CC;
break;
case PM_CONST_CURRENT_DISCHARGE:
nStepMode = WORK_DC;
break;
case PM_STEP_C_RATE_CHARGE:
nStepMode = WORK_CRATE;
break;
case PM_STEP_C_RATE_DISCHARGE:
nStepMode = WORK_DRATE;
break;
case PM_STEP_CCCV_CHARGE:
nStepMode = WORK_CCCV;
break;
case PM_STEP_CCCV_DISCHARGE:
nStepMode = WORK_DCDV;
break;
case PM_CONST_VOLT_CHARGE:
nStepMode = WORK_CV;
break;
case PM_CONST_VOLT_DISCHARGE:
nStepMode = WORK_DV;
break;
case PM_STEP_RATE_CV_CHARGE:
nStepMode = WORK_CRATECV;
break;
case PM_STEP_RATE_CV_DISCHARGE:
nStepMode = WORK_DRATEDV;
break;
case PM_STEP_CPCV_CHARGE:
nStepMode = WORK_CPCV;
break;
case PM_STEP_CPCV_DISCHARGE:
nStepMode = WORK_DPDV;
break;
case PM_STEP_LOOP:
nStepMode = WORK_WHILE;
break;
default:
// 无法识别的第三方工步号
return false;
break;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)