Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
5 Trả lời
30971 Lượt xem

There are three compute functions in my code. But I got the 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, *args, **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, **kw)
  File "/vagrant/odoo/odoo/http.py", 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], method, args, kwargs)
  File "/vagrant/odoo/odoo/api.py", line 396, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/vagrant/odoo/odoo/api.py", line 383, in _call_kw_multi
    result = method(recs, *args, **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


I have assigned the value in function. Like name = []、real_date = False、record.editable = False
But it still can't work. I don't know which function is wrong
How can I fix the function? Please give me some suggestions. Thanks!

class Request(models.Model):

_name = '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 RequestSrcmst(models.Model):

_name = '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
Ảnh đại diện
Huỷ bỏ

Hey,

I see that you have defined a method search_date for the date field but I don't see that method defined in your class. Try defining the method and see if it works.

Thanks and Regards,

Divyansh

Câu trả lời hay nhất

In odoo15 Just Add store=True in the field

Ảnh đại diện
Huỷ bỏ

This worked in Odoo 15, thank you Ajmal.

You are Welcome

Câu trả lời hay nhất

Try to add `else` statement. In my case it worked.

Ex:  

        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
else:
record.editable = False

Hope this will help you.
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hello Xun,

Actually, It is raising errors from the meeting. request model related code. Can you check that code that has any compute field/method? Do you have any custom code related to it?

Thanks

Regards,




Email:      odoo@aktivsoftware.com  

Skype: kalpeshmaheshwari


Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

For anyone who still face this problem, I have that one and even the @Niyas Raphy answer didn't help me to fix it. 

The problem was that I was trying to use compute in a selection field, which is not valid as I can see. I change the compute function to a integer value and this solve my problem.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

The VALUE error appears when a value is not the expected type. This can occur when cells are left blank, when a function that is expecting a number is given a text value, and when dates are treated as text by Excel.

Regards,

Rachel Gomez

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 7 23
5971
2
thg 7 22
10461
2
thg 10 21
2554
0
thg 8 21
1444
0
thg 7 21
3375