from odoo import time def work_one(): begin_time = time.perf_counter() for i in range(10000): print(i) print(time.perf_counter() - begin_time)为什么没有结果
时间: 2024-02-27 16:51:18 浏览: 90
您的代码中似乎缺少了缩进。请尝试将其缩进,并确保在导入模块时使用正确的语法。以下是修改后的代码示例:
```python
import time
def work_one():
begin_time = time.perf_counter()
for i in range(10000):
print(i)
print(time.perf_counter() - begin_time)
work_one()
```
这个程序应该输出一个计数器,从0到9999,然后输出程序的执行时间。如果您仍然没有看到输出,请确保在正确的地方调用了函数 `work_one()`。
相关问题
AttributeError: module 'odoo.api' has no attribute 'model_cr'
AttributeError: 'module 'odoo.api'' has no attribute 'model_cr'' 这个错误通常发生在Odoo(以前称为OpenERP)框架中,当你试图访问`model_cr`这个属性时。`model_cr`是Odoo的老版本API中的一个组件,它负责数据库的低级操作,如创建、更新和删除记录。然而,在Odoo的新版本或更现代的开发实践中,这个名称可能已被弃用或者重构。
可能的原因有:
1. 你正在使用的代码库是旧版本的,而`model_cr`已经被新的模型管理API(如`api.model`)所取代。
2. 你尝试访问的对象已不再当前环境中可用,比如某个模块未加载或者模型已经被重构。
3. 代码引用有问题,例如拼写错误或者模块导入路径不正确。
要解决这个问题,你可以检查以下几个步骤:
1. 确认你正在使用的Odoo版本和相应的API文档,确认`model_cr`是否仍然有效。
2. 检查你的Python脚本或模块,确保正确的`from odoo.api import model`或类似导入语句。
3. 如果使用的是新功能,确保你已经正确地加载了需要的模块和模型。
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)] name = fields.Char(u'名称') model_id = fields.Many2one('ir.model', u'模型', domain=_compute_domain, index=1) model_name = fields.Char(related="model_id.model", string='模型名称') condition = fields.Char(u'条件', help=u'请遵循odoo的domain的写法,如:[("field_name", "=", value)]',store=True) class RokedispatchordermanagementPriceApprove(models.Model): _name = 'roke.dispatch.order.management.price.approve' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单应付审核" _rec_name = "code" order_id = fields.Many2one('roke.dispatch.order.management', string='派船单', ondelete='cascade') code = fields.Char(string='单据编号', store=True, related='order_id.code') class Rokedispatchordermanagement(models.Model): _name = 'roke.dispatch.order.management' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单" _rec_name = "code" client = fields.Many2one('roke.partner', string='客户', tracking=True, required=True,) department_manager = fields.Many2one('res.users', string='创建人', tracking=True, default=lambda self: self.env.user.id) box_number = fields.Char(string='箱号') shipping_companies = fields.Char(string='船公司') field_station = fields.Char(string='场站') ship_name_voyage = fields.Char(string='船名航次') port_of_discharge = fields.Char(string='卸货港') box_type = fields.Many2one('roke.box.type', string='箱型') code = fields.Char(string='单据编号', track_visibility='onchange') 派传单应付审核表提交审核在审批流程的条件里面有记录同时如果选择完成之后不能删除派船单这条审批通过的不能删除要重新写删除方法怎么写
首先,在 ApprovalFlow 类中的 _compute_domain 方法中,通过 inspect.getmembers 方法获取当前模块中所有的类,然后筛选出继承自 Model 类的类,并将其对应的模型名存储在 odoo_cls 列表中。同时,通过查询 ir.model 模型获取所有的临时对象,并将其对应的模型名也存储在 odoo_cls 列表中。最后,将所有不在 odoo_cls 列表中的模型名作为 domain 返回,以在创建 ApprovalFlow 对象时限制模型选择范围。
其次,在 RokedispatchordermanagementPriceApprove 类中,使用了 _inherit 属性继承了 mail.thread 和 mail.activity.mixin 两个类,使得该模型具有邮件和活动的功能。同时,该模型关联了 Rokedispatchordermanagement 模型,并且定义了一个 code 字段,用于存储派船单的单据编号。
最后,在 Rokedispatchordermanagement 类中,定义了派船单的各个字段,其中包括一个 code 字段用于存储单据编号。如果要在审批通过后禁止删除,可以在 RokedispatchordermanagementPriceApprove 类中重载 unlink 方法,在其中判断当前记录是否已经通过审批,如果通过审批则不允许删除,否则可以删除。代码示例如下:
```python
class RokedispatchordermanagementPriceApprove(models.Model):
...
def unlink(self):
for rec in self:
if rec.state == 'approved':
raise UserError("已通过审批的记录不能删除!")
return super(RokedispatchordermanagementPriceApprove, self).unlink()
```
需要注意的是,在上述代码中,假设该模型有一个 state 字段用于记录当前记录的状态,当 state 等于 approved 时表示已经通过审批。如果没有 state 字段,需要根据实际情况进行修改。另外,如果其他模型也需要在审批通过后禁止删除,可以类似地在对应的模型中重载 unlink 方法。
阅读全文