2017-03-07 60 views
0

想問問回合預計單錯誤odoo。即使ive修復它與@ api.one,IAM仍然困惑布特的錯誤,並想知道我可以修復它沒有@ api.one?這裏是我的代碼以@ api.one:預計單錯誤odoo

class overtime_details(models.Model): 
    _name='overtime.overtime_details' 

    @api.onchange('employee_id') 
    @api.one 
    def attd_check(self): 
    #import pdb;pdb.set_trace() 
    for attds in self: 
     if attds.id: 
      ov = 0.0 
      attd = self.env['hr.attendance'] 
      signin = attd.search([('name','=',self.overtime_id.start_date), 
        ('employee_id','=', self.employee_id.id), ('action','=','sign_in')]) 
      signout = attd.search([('name','=',self.overtime_id.end_date), 
        ('employee_id','=',self.employee_id.id), ('action','=','sign_out')]) 
      if signin: 
       if signout: 
        ov = self.env['overtime.overtime'].calc_overtime(self.overtime_id.start_date, self.overtime_id.end_date) 
       else: 
        ov = 0.0 
      else: 
       ov = 0.0 

      self.ovrtm = ov 


    nik = fields.Char('NIK', size=250, required=True) 
    overtime_id = fields.Many2one('overtime.overtime', string="Overtime", ondelete='cascade') 
    job_id = fields.Many2one('hr.job', string="Position") 
    employee_id = fields.Many2one('hr.employee', "Employee", required=True, select=True) 
    ovrtm = fields.Float(compute='attd_check', string='Overtime Hour(s)') 

這裏使用odoo 8回溯和IAM:

File "C:\Program Files (x86)\Odoo 8.0\server\.\openerp\fields.py", line 825, i 
n __get__ 
    File "C:\Program Files (x86)\Odoo 8.0\server\.\openerp\models.py", line 5323, 
in ensure_one 
except_orm: ('ValueError', 'Expected singleton: overtime.overtime_details(2, 
3, 4)') 

IAM一個新手在odoo和Python這是我面臨這樣的第1次錯誤,前

+0

你能提供堆棧跟蹤和odoo的版本嗎? –

+0

@ api.model也可以工作,但你仍然需要一個裝飾.. 更多地瞭解裝飾。參閱下面的鏈接 [方法和裝飾](http://odoo-new-api-guide-line.readthedocs.io/en/latest/decorator.html) –

+0

抱歉,IVE提供回溯錯誤。你們可以檢查它 –

回答

4

@api.one感謝意味着記錄時@api.multi意味着多個記錄。 如果是@api.multi,則只能使用for rec in self:。在單條記錄的情況下,您不需要使用for,這只是沒有意義。

錯誤消息稱預期單身,這意味着:您正在使用記錄,而不是記錄,你沒有張貼錯誤日誌,所以我只可以猜測,你需要從搜索結果中彈出一個記錄。

祝你好運

+0

抱歉,香港專業教育學院提供的錯誤日誌,你可以檢查它現在 –

+0

注意這一點,當你將在自用'的記錄:'避免單錯誤不要再次使用自己的這個'for'循環分配一個新的值,因爲現在你的記錄是'rec',而'self'是記錄集 –

+0

是的,就像你說的一樣,我找到了像dat這樣的解決方案。感謝您的回答:) –