首页 > 解决方案 > odoo 12中的Keyerror'job.cost.sheet'

问题描述

我正在尝试在 Odoo中开发一个自定义模块。当我升级它时,我在日志中收到此错误。

Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py”,第 1049 行,在 get value = self._data[key][field][record. _ids[0]] 密钥错误:434

在处理上述异常的过程中,又出现了一个异常:

回溯(最后一次调用):文件“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', 无)

在处理上述异常的过程中,又出现了一个异常:

Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 656 行,在 _handle_exception return super(JsonRequest, self)._handle_exception(exception) File 中C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py",第 314 行,在 _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) 文件“C :\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py",第 87 行,在 reraise raise 值文件 "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py ”,第 698 行,在调度结果中 = self._call_function(**self.params) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 346 行,在 _call_function return checked_call( self.db, *args, **kwargs) 文件 "C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py”,第 97 行,在包装器中返回 f(dbname, *args, **kwargs) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http. py”,第 339 行,在 checked_call 结果 = self.endpoint(*a, **kw) 文件“C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py”,第 941 行,在在getitem中 返回 self._fields[key]。得到(self, type(self)) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 993, in get self.determine_value(record) File "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) File "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")  

标签: python-3.xodoo-12

解决方案


定义'job.cost.sheet'为代码ir.sequence

并用作self.env['ir.sequence'].next_by_code('job.cost.sheet')


推荐阅读