如何在嵌套 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)]
如果没有帮助请给我日志。
我正在尝试访问嵌套字典中的值并以 ;
结束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)]
如果没有帮助请给我日志。