Openerp 如何用odoo9中的默认值覆盖字段默认值?
我想用odoo9中的默认_get API函数覆盖字段的默认值 我的代码中有:Openerp 如何用odoo9中的默认值覆盖字段默认值?,openerp,odoo-9,Openerp,Odoo 9,我想用odoo9中的默认_get API函数覆盖字段的默认值 我的代码中有: @api.model def default_get(self, fields_list): res = super(hr_attendance, self).default_get(fields_list) res.update({ 'animal': 'dog' }) return r
@api.model
def default_get(self, fields_list):
res = super(hr_attendance, self).default_get(fields_list)
res.update({
'animal': 'dog'
})
return res
创建新寄存器时,此错误出现在odoo日志中:
2016-09-02 11:33:36,680 27542 ERROR mydb openerp.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/etc/odoo/server/openerp/http.py", line 648, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/etc/odoo/server/openerp/http.py", line 685, in dispatch
result = self._call_function(**self.params)
File "/etc/odoo/server/openerp/http.py", line 321, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/etc/odoo/server/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/etc/odoo/server/openerp/http.py", line 314, in checked_call
result = self.endpoint(*a, **kw)
File "/etc/odoo/server/openerp/http.py", line 964, in __call__
return self.method(*args, **kw)
File "/etc/odoo/server/openerp/http.py", line 514, in response_wrap
response = f(*args, **kw)
File "/etc/odoo/server/addons/web/controllers/main.py", line 888, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/etc/odoo/server/addons/web/controllers/main.py", line 880, in _call_kw
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
File "/etc/odoo/server/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/etc/odoo/server/openerp/api.py", line 354, in old_api
result = method(recs, *args, **kwargs)
File "/etc/odoo/server/addons_extra/hr_attendance_extend/hr_attendance.py", line 79, in default_get
res.update({
AttributeError: 'tuple' object has no attribute 'update'
我做错了什么
Edit:我有另一个同名变量,它引发了冲突。
重命名变量后,一切工作正常。
update
是字典数据类型的一种方法。您正试图将其用于元组数据类型。这就是你出错的原因
请尝试使用以下代码:
@api.model
def default_get(self, fields):
res = super(hr_attendance, self).default_get(fields)
res['animal'] = 'dog'
return res
奇怪的是,
res
是一个元组default\u get
应该返回一个字典,代码应该可以工作。您是否正确设置了对模块的依赖关系?您的模型是否继承自hr.attendence
?看起来你的超级调用什么都没做。@CZoellner检查了所有的代码,我意识到我有另一个变量叫做“res”(sql查询执行的结果)。因此,我在代码中遇到了冲突。我已经重新命名了vars,现在,原来的代码工作得很好。是我的错。谢谢你的帮助:)@CZoellner,你说得对default\u get
应返回字典。根据错误,我已经写了答案。在适当的时候,我会实现同样的东西来复制它。我的错。我有另一个同名的var。原始代码运行良好,您的代码也可以。我已经用这两种代码进行了测试。谢谢你的回答:)