如何在嵌套 dictionary-Python/Openerp 中调用值

How to call values in nested dictionary-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: )>"

请帮我解决这个问题。我的 classes 和其他必要的表达式如下所示;

class on_call_days 字段;

'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"),

class 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"),

class allowance_request 字段,这是我尝试使用这些表达式的 class。

    '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)]

此函数还有其他内容,最后将 return val

问题来自 filt +=[('att_date_date','<=', end_date)] 我试图从中检索值那个嵌套的字典。请帮我解决这个问题。

这里你没有定义过滤器,所以你可能得到了回溯

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)]

如果没有帮助请给我日志。