代码之家  ›  专栏  ›  技术社区  ›  Swan White

如何在嵌套字典Python/Openerp中调用值

  •  0
  • Swan White  · 技术社区  · 8 年前

    我试图访问嵌套字典中的一个值,并最终得到;

    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\u call\u天 领域;

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

    Allowment_出席人数 领域;

    '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_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\u date\u date','和lt;=',end\u date)] 我试图从嵌套字典中检索值。请帮助met解决此问题。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Hilar AK    8 年前

    这里你没有定义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)]
    

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