2017-08-10 111 views
0

我正在尝试访问嵌套字典中的值并最终结束;如何调用嵌套字典中的值-Python/Openerp

raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf))) 
ValueError: Invalid field 'att_date_date' in leaf "<osv.ExtendedLeaf: ('att_date_date', '<=', '2017-08-01') on on_call_days (ctx:)>" 

请帮我解决这个问题。我的课程和其他必要的表达如下:

on_call_days fields;

'employee_id': fields.many2one('hr.employee', "Employee"), 
'catagory_id':fields.related('employee_id', 'category', string='Emp Category', relation='hr.employee',store=True), 
'oc_date':fields.date('From Date'), 
'oc_amount':fields.float('Amount for the period'), 
'processed_flag':fields.boolean("Entered flag"), 

allowance_attendances字段;

'employee_id': fields.many2one('hr.employee', "Employee"), 
'catagory_id':fields.related('employee_id', 'category', string='Emp Category', relation='hr.employee',store=True),   
'attendance_id':fields.integer("Attendance ID"), 
'att_date':fields.char("Date"), 
'att_date_date':fields.date("Date Date"), 

allowance_request领域,这是我试图用这些表达式的类。

'allowance_attendances_id':fields.one2many('allowance.attendances','allowance_request_id','Allowance Attendance'), 
    'oc_days_id':fields.one2many('on.call.days','allowance_request_id','On Call Days'), 

我试图做的是

def onchange_employee(self, cr, uid, ids, employee_id,start_date,end_date,context=None): 

     DATETIME_FORMAT2 = "%y/%m/%d" 
     allo_att_obj=self.pool.get('allowance.attendances') 
     on_call_obj=self.pool.get('on.call.days') 
     val = {'value': {'allowance_attendances_id': [],'oc_days_id':[]}} 
     if end_date:     

       filt +=[('att_date_date','<=', end_date)]    
      if start_date :    

       filt += [('att_date_date','>=', start_date)] 

还有其他的东西会在这里,这个功能将在年底回报VAL

问题是从FILT + =未来[( 'att_date_date', '< =' 日期,结束日期)]其中我试图从嵌套词典检索值。请帮助解决这个问题。

回答

1

在这里,你没有定义的FILT,所以可能你得到的回溯

Traceback (most recent call last): 
File "<input>", line x, in <module> 
NameError: name 'filt' is not defined 

,所以我改变代码:

def onchange_employee(self, cr, uid, ids, employee_id,start_date,end_date,context=None): 

    DATETIME_FORMAT2 = "%y/%m/%d" 
    allo_att_obj=self.pool.get('allowance.attendances') 
    on_call_obj=self.pool.get('on.call.days') 
    val = {'value': {'allowance_attendances_id': [],'oc_days_id':[]}} 
    filt = [] 
    if end_date:     

      filt +=[('att_date_date','<=', end_date)]    
     if start_date :    

      filt += [('att_date_date','>=', start_date)] 

如果它没有帮助,请让我的日志。