ValueError Erwarteter Singleton, Odoo8

Ich habe an einem Modul in Odoo8 unter Ubuntu 14.04 gearbeitet. Beim Speichern eines Formulardatensatzes, der auf einigen One2many-Feldern basiert, ist ein seltsames Problem aufgetreten. Der Fehler sagt

ValueError

Expected singleton: hr.employee.pay.change(84, 85) 

Mein Python-Code ist wie folgt

class hr_employee_pay_change(models.Model):

    _name='hr.employee.pay.change'
    hr_payroll_change_ids = fields.Many2one("employee.salary.change", "Employee", ondelete="cascade")

    @api.onchange('emp_basic', 'emp_allowance')
    @api.depends('emp_basic', 'emp_allowance')
    def _current_total(self):
        self.emp_current_total = self.emp_basic + self.emp_allowance



    @api.onchange('emp_propose_allowance', 'emp_propose_basic')
    @api.depends('emp_propose_allowance', 'emp_propose_basic')
    def _proposed_total(self):
        data_val={}
        self.emp_propose_total = self.emp_propose_basic + self.emp_propose_allowance
        cr=self._cr
        uid=self._uid
        ids=self._ids  
        val=int(self.employee_name)
        if val:
           cr.execute("select max_salary,min_salary from hr_job where id in (select job_id from hr_employee where id='"+str(val)+"')")
           res=cr.fetchall()
           for data_val in res:
               max_sal=data_val[0]
               min_sal=data_val[1]
           if not min_sal < self.emp_propose_total < max_sal: 
              self.emp_propose_basic = 0.0
              self.emp_propose_allowance = 0.0
              return {'warning':{'title':'warning','message':'Out of Range, Proposed Total must be in between "'+str(max_sal)+'"to"'+str(min_sal)+'"'}}
        else:
           cr.execute("select wage from hr_contract where employee_id=0")    




    @api.onchange('employee_name')
    @api.depends('employee_name')
    def get_data(self):
        data={}
        cr=self._cr
        uid=self._uid
        ids=self._ids     
        value=int(self.employee_name)        
        if(self.employee_name):  
           cr.execute("select wage,allowance from hr_contract where employee_id ='"+str(value)+"'")
           res=cr.fetchall()
           for data in res:
               self.emp_basic=data[0]
               self.emp_allowance = data[1]

        else:     
           cr.execute("select wage,allowance from hr_contract where employee_id=0")   



    employee_name = fields.Many2one('hr.employee', 'Employee Name', required=True )
    zeo_number = fields.Char(related='employee_name.zeo_number', string='ZEO Number', readonly=True )
    emp_basic = fields.Float('Basic Salary',  compute='get_data',readonly=True, store=True )
    emp_allowance = fields.Float('Allowance', compute='get_data',readonly=True, store=True )
    emp_current_total = fields.Float('Totals', compute='_current_total', store=True, track_visibility='always')
    emp_propose_basic = fields.Float('Proposed Basic')
    emp_propose_allowance = fields.Float('Proposed Allowance')
    emp_propose_total = fields.Float('Proposed Totals', compute='_proposed_total', store=True, track_visibility='always')

Ich kann dieses Problem nicht beheben. Ich habe versucht, die 'readonly = True'-Eigenschaft des Feldes zu entfernen, und das Problem wurde behoben, aber ich muss sie als readonly haben. Hoffnungen auf Vorschlag

Antworten auf die Frage(2)

Ihre Antwort auf die Frage