Skip to Content
Menu
This question has been flagged
2 Replies
3888 Views

Hello ! please i need help. i want to extract a date from create_date field in odoo. ex :

when i did this. i got error.

record.create_date.date()

Avatar
Discard

Hi,
Can You please share your error?

Author
Odoo Server Error
Traceback (most recent call last):
  File "C:\Program Files\server\odoo\addons\base\models\ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "C:\Program Files\server\odoo\http.py", line 683, in dispatch
    result = self._call_function(**self.params)
  File "C:\Program Files\server\odoo\http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\Program Files\server\odoo\service\model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\Program Files\server\odoo\http.py", line 347, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\Program Files\server\odoo\http.py", line 912, in __call__
    return self.method(*args, **kw)
  File "C:\Program Files\server\odoo\http.py", line 531, in response_wrap
    response = f(*args, **kw)
  File "C:\Program Files\server\odoo\addons\web\controllers\main.py", line 1389, in call_kw
    return self._call_kw(model, method, args, kwargs)
  File "C:\Program Files\server\odoo\addons\web\controllers\main.py", line 1381, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "C:\Program Files\server\odoo\api.py", line 396, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "C:\Program Files\server\odoo\api.py", line 383, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "C:\Program Files\server\odoo\models.py", line 6244, in onchange
    snapshot1 = Snapshot(record, nametree)
  File "C:\Program Files\server\odoo\models.py", line 6049, in __init__
    self.fetch(name)
  File "C:\Program Files\server\odoo\models.py", line 6059, in fetch
    self[name] = record[name]
  File "C:\Program Files\server\odoo\models.py", line 5666, in __getitem__
    return self._fields[key].__get__(self, type(self))
  File "C:\Program Files\server\odoo\fields.py", line 967, in __get__
    self.recompute(record)
  File "C:\Program Files\server\odoo\fields.py", line 1153, in recompute
    self.compute_value(recs)
  File "C:\Program Files\server\odoo\fields.py", line 1175, in compute_value
    records._compute_field_value(self)
  File "C:\Program Files\server\odoo\addons\base_automation\models\base_automation.py", line 367, in _compute_field_value
    _compute_field_value.origin(self, field)
  File "C:\Program Files\server\odoo\addons\mail\models\mail_thread.py", line 410, in _compute_field_value
    return super()._compute_field_value(field)
  File "C:\Program Files\server\odoo\models.py", line 4063, in _compute_field_value
    field.compute(self)
  File "C:\Program Files\server\odoo\addons\base\models\ir_model.py", line 34, in 
    func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode="exec")
  File "C:\Program Files\server\odoo\tools\safe_eval.py", line 346, in safe_eval
    raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Program Files\server\odoo\http.py", line 639, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "C:\Program Files\server\odoo\http.py", line 315, in _handle_exception
    raise exception.with_traceback(None) from new_cause
ValueError: : "'bool' object has no attribute 'date'" while evaluating
"for record in self:\n  record['x_studio_test'] = record.create_date.date()"

regards

Author
Thanks sir. I share the error. Can you assist me ?

Le jeu. 17 nov. 2022 à 10:23, Sahar Dagher <notifications@mail.odoo.com> a écrit :

Hi,
Can You please share your error?

--
Sahar Dagher

Sent by Odoo S.A. using Odoo.

Best Answer

When you create any record, the create_date field remains empty and contains the False value. You must need to save your record before accessing Date from the create_date field.
Then you can get date from record.create_date.date().

Avatar
Discard
Author

Thanks very much for ur effort. but in my case, i want to compare two dates. one of them is datetime field witch is create_date. so i want to get a date from datetime field. that is a real problem. if some one can hep me, how to get generally, date from datetime field knowing that i use odoo online.
when i try this for example:
d = datetime.datetime.strptime(record.create_date, "%Y-%m-%d %H:%M:%S").date()
and
d = datetime.datetime.strptime(record.create_date, "%Y-%m-%d %H:%M:%S").strftime('%Y-%m-%d')
gives me an error.

Regards !!

You can extract Date from the DateTime type field by
create_date.date(). This will give you only date from datetime field.
If you are comparing two dates then those two date need to be present there. If you accessing create_date, record must be saved first.

Best Answer
record.create_date.date() return 'NONE'
if you are trying to set date before saving the record in database it will return empty value(bool) for create_date field.

You can share your code for more assistance :)

 

Avatar
Discard
Author

Thanks very much for ur effort. but in my case, i want to compare two dates. one of them is datetime field witch is create_date. so i want to get a date from datetime field. that is a real problem. if some one can hep me, how to get generally, date from datetime field knowing that i use odoo online.
when i try this for example:
d = datetime.datetime.strptime(record.create_date, "%Y-%m-%d %H:%M:%S").date()
and
d = datetime.datetime.strptime(record.create_date, "%Y-%m-%d %H:%M:%S").strftime('%Y-%m-%d')
gives me an error.

Regards !!

You can extract date from create_date by record.create_date.date(),
but you are trying to get this value before saving the record, so the date value can't be extracted from an empty field.
make sure the record is saved first then you can compare two dates