【发布时间】:2020-06-25 06:56:13
【问题描述】:
我正在尝试在 Odoo 中开发一个自定义模块。 当我升级它时,我在日志中收到此错误。
Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py",第 1049 行,在获取 value = self._data[key][field][record._ids[0]] KeyError: 434
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py",第 989 行,在 get 中 value = record.env.cache.get(record, self) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py”,第 1051 行,在 get raise CacheMiss(record, field) odoo.exceptions.CacheMiss: ('ir.actions.act_window(434,).search_view', None)
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py",第 656 行,在 _handle_exception 中 返回 super(JsonRequest, self)._handle_exception(exception) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 314 行, 在 _handle_exception 中 raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py",第 87 行,在 reraise 提高值 File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 698, in dispatch 结果 = self._call_function(**self.params) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 346 行,在 _call_function 返回 checked_call(self.db, *args, **kwargs) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py”,第 97 行,在 包装 return f(dbname, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 339, in checked_call result = self.endpoint(*a, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 941, in call 返回 self.method(*args, **kw) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 519 行,在 response_wrap 响应 = f(*args, **kw) 文件“c:\program files (x86)\odoo 12.0\server\odoo\addons\web\controllers\main.py”,第 1262 行,加载中 action = request.env[action_type].browse([action_id]).read() 文件 "c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_actions.py”,第 210 行,已读 结果 = super(IrActionsActWindow, self).read(fields, load=load) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py”,行 2797,已读 vals[name] = convert(record[name], record, use_name_get) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py”,第 5120 行, 在 getitem 中 return self._fields[key].get(self, type(self)) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py",第 993 行,在 得到 self.determine_value(record) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py”,第 1106 行,在确定值中 self.compute_value(recs) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py”,第 1060 行,在 compute_value self._compute_value(records) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py”,第 1051 行,在 _compute_value getattr(records, self.compute)() 文件“c:\program files (x86)\odoo 12.0\server\odoo\addons\base\models\ir_actions.py”,行 170,在_compute_search_view fvg = self.env[act.res_model].fields_view_get(act.search_view_id.id, '搜索') 文件 "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py",第 831 行,在 getitem 中 return self.registry[model_name]._browse((), self) 文件 "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\registry.py", 第 176 行,在 getitem 中 return self.models[model_name] KeyError: 'job.cost.sheet'
这是我的代码
class JobCostSheet(models.Model):
_name = 'job.cost.sheet'
sequence = fields.Char(string='Sequence', readonly=True, copy=False, index=True,default=lambda self:self.env['ir.sequence'].get('job.cost.sheet'))
project_id = fields.Many2one('project.project',string='Project')
analytic_ids = fields.Many2one('account.analytic.account',string="Analytic Account")
job_order_id = fields.Many2one('job.order','Job Order')
job_issue_customer_id = fields.Many2one('res.partner', 'Job Issue Customer')
create_date = fields.Datetime(string="Create Date",default=datetime.now())
close_date = fields.Datetime(string="Close Date",default=datetime.now())
create_by_id = fields.Many2one('res.users','Created By')
material_job_cost_line_ids = fields.One2many('job.cost.line','material_job_cost_sheet_id','Material Job Cost Line')
labour_job_cost_line_ids = fields.One2many('job.cost.line','labour_job_cost_sheet_id','Labout Job Cost Line')
overhead_job_cost_line_ids = fields.One2many('job.cost.line','overhead_job_cost_sheet_id','Overhead Job Cost Line')
tools_job_cost_line_ids = fields.One2many('job.cost.line','tools_job_cost_sheet_id','Tools Job Cost Line')
machines_job_cost_line_ids = fields.One2many('job.cost.line','machines_job_cost_sheet_id','Tools Job Cost Line')
total_material_cost = fields.Float(compute='_compute_total_material_cost',string="Total Material Cost",default=0.0)
total_labour_cost = fields.Float(compute='_compute_total_labour_cost',string='Total Labour Cost',default=0.0)
total_overhead_cost = fields.Float(compute='_compute_total_overhead_cost',string='Total Overhead Cost',default=0.0)
total_cost = fields.Float(compute='_compute_total_cost',string='Total Cost',default=0.0)
job_cost_description = fields.Text('Job Cost Description')
currency_id = fields.Many2one("res.currency", compute='get_currency_id', string="Currency")
stage = fields.Selection([('draft','Draft'),('confirm','Confirmed'),('approve','Approved'),('done','Done')],'Stage',
copy=False,default='draft')
purchase_order_line_count = fields.Integer('Purchase Order Line', compute='_get_purchase_order_line_count')
invoice_line_count = fields.Integer('Invoice Order Line', compute='_get_invoice_line_count')
#is_done_stage = fields.Boolean(string='Is Done Stage')
#is_confirm_stage = fields.Boolean(string='Is Confirm Stage',default=False)
#is_approve_stage = fields.Boolean(string='Is Approve Stage',default=False)
company_id = fields.Many2one('res.company',string="Company")
sale_reference = fields.Text(string="Description Sale Reference")
【问题讨论】:
-
我认为问题是
default=lambda self: self.env['ir.sequence'].get('job.cost.sheet') -
同意@PruthviBarot,你能得到那个表达式的值吗?因为默认属性值应该是字段的类型。在你的情况下,它应该是一些字符。
标签: python-3.x odoo-12