sys.modules[__name__]
时间: 2023-04-18 19:00:55 浏览: 226
sys.modules[__name__]是Python中的一个内置模块,用于获取当前模块的名称。它返回的是一个字典,其中包含了当前模块的所有属性和方法。在Python中,模块是一个独立的代码单元,可以被其他模块导入和使用。使用sys.modules[__name__]可以方便地获取当前模块的属性和方法,从而实现更加灵活和高效的编程。
相关问题
d2l=sys.modules[__name__]
你好!我是一个名为 'C知道 '的AI助手,我可以回答关于编程和技术的问题。关于你提到的代码,d2l=sys.modules[__name__],这行代码的作用是将当前模块(即包含这行代码的模块)的引用赋值给变量d2l。这样,通过d2l可以访问当前模块的所有属性和方法。这种用法常见于模块内部,用于在模块中引用自身的属性和方法。如果你有任何其他问题,请随时提问!
class ApprovalFlow(models.Model): _name = 'approval.flow' _description = u'审批流程' def _compute_domain(self): all_cls = inspect.getmembers(sys.modules[__name__], inspect.isclass) odoo_cls = [getattr(cls[1], '_name') for cls in all_cls if cls[1].__bases__[0].__name__ == 'Model'] # 排除当前的对象 odoo_cls += [model.model for model in self.env['ir.model'].search([('transient', '=', True)])] # 排除临时对象 return [('model', 'not in', odoo_cls)] approval_cannot_run = fields.Char(u'完成后不能执行操作', help=u'审批流程完成后不能能执行的操作,修改,删除', store=True) name = fields.Char(u'名称') model_id = fields.Many2one('ir.model', u'模型', domain=_compute_domain, index=1) 如果选择完成后不能删除重写生成方法怎么写
如果您想在完成审批流程后禁止对该记录进行删除操作,可以尝试重写Odoo的“unlink”方法。您可以将以下代码添加到您的“ApprovalFlow”类中:
```python
@api.multi
def unlink(self):
for flow in self:
if flow.state != 'draft':
raise UserError(_('Cannot delete a record in approval flow.'))
return super(ApprovalFlow, self).unlink()
```
在这个新的“unlink”方法中,我们首先检查当前记录的状态是否为“draft”,如果不是,则抛出一个用户错误,阻止删除操作。如果状态为“draft”,则调用原始的“unlink”方法以正常执行删除操作。
请注意,在重写Odoo的方法时,尽量不要直接修改原始方法。相反,您应该使用Odoo的装饰器来定义新的方法,以确保您的代码可以与任何未来的Odoo版本兼容。
阅读全文