如何解决ValueError:计算方法无法分配Python3 odoo
odoo Server Error
Traceback (most recent call last):
File "/vagrant/odoo/odoo/addons/base/models/ir_http.py",line 237,in _dispatch
result = request.dispatch()
File "/vagrant/odoo/odoo/http.py",line 682,in dispatch
result = self._call_function(**self.params)
File "/vagrant/odoo/odoo/http.py",line 358,in _call_function
return checked_call(self.db,*args,**kwargs)
File "/vagrant/odoo/odoo/service/model.py",line 94,in wrapper
return f(dbname,**kwargs)
File "/vagrant/odoo/odoo/http.py",line 346,in checked_call
result = self.endpoint(*a,**kw)
File "/vagrant/odoo/odoo/http.py",line 911,in __call__
return self.method(*args,line 530,in response_wrap
response = f(*args,**kw)
File "/vagrant/odoo/addons/web/controllers/main.py",line 1359,in call_kw
return self._call_kw(model,method,args,kwargs)
File "/vagrant/odoo/addons/web/controllers/main.py",line 1351,in _call_kw
return call_kw(request.env[model],kwargs)
File "/vagrant/odoo/odoo/api.py",line 396,in call_kw
result = _call_kw_multi(method,model,line 383,in _call_kw_multi
result = method(recs,**kwargs)
File "/vagrant/odoo/odoo/models.py",line 6165,in onchange
value = record[name]
File "/vagrant/odoo/odoo/models.py",line 5640,in __getitem__
return self._fields[key].__get__(self,type(self))
File "/vagrant/odoo/odoo/fields.py",line 979,in __get__
raise ValueError("Compute method Failed to assign %s.%s" % (record,self.name))
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/vagrant/odoo/odoo/http.py",line 638,in _handle_exception
return super(JsonRequest,self)._handle_exception(exception)
File "/vagrant/odoo/odoo/http.py",line 314,in _handle_exception
raise exception.with_traceback(None) from new_cause
ValueError: Compute method Failed to assign meeting.request(<NewId 0x7f4760a316d8>,).description
我在我的函数中分配了空值。
比如 self.request_srcmst_names = ''、self.date = ''、self.editable = False
但它仍然无法工作。不知道是哪个功能出错了。
class MeetingRequest(models.Model):
_name = 'meeting.request'
request_srcmst_names = fields.Char(compute=_compute_request_srcmst_names)
date = fields.Date(compute=compute_date,search=search_date)
@api.depends('request_srcmst_ids')
def _compute_request_srcmst_names(self):
self.request_srcmst_names = ''
for record in self:
name = []
for request_srcmst in record.request_srcmst_ids:
name.append(request_srcmst.meeting_srcmst_id.name)
record.request_srcmst_names = ','.join(name)
@api.depends('start_date')
def compute_date(self):
self.date = ''
for record in self:
if record.start_date:
real_date = pytz.utc.localize(datetime.datetime.strptime(record.start_date,'%Y-%m-%d %H:%M:%s')).astimezone(pytz.timezone(config['timezone'])).date()
record.date = real_date
class MeetingRequestSrcmst(models.Model):
_name = 'meeting.request.srcmst'
editable = fields.Boolean(compute=_compute_editable)
def _compute_editable(self):
self.editable = False
for record in self:
if record.hre_empbas_id.res_users_id.id == self.env.uid or record.create_uid.id == self.env.uid:
record.editable = True
如何修复该功能?请给我一些建议。谢谢!
解决方法
我认为这是语法错误。您忘记在函数名称周围加上引号。计算出的函数名称应该在引号内 - compute='compute_date'。搜索功能也是如此。
就你而言,
naming
在计算字段的函数中,您可以删除:
hlookup
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。