2017-08-10 7 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フィールド;

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

です。

問題は、私がそのネストされた辞書から値を取得しようとFILT + = [( 'att_date_date'、 '< ='、END_DATE)]から来ています。これを解決するためにお手伝いしてください。それならば私にログを取得してください役立ちますdoesntの

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

答えて

1

ここでは、FILTを定義されていなかったので、おそらくあなたはトレースバック

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

を取得するので、私は通りのコードを変更しました。

関連する問題