user_odoo
user_odoo

Reputation: 2358

Get current datetime in odoo 9

How in defaults get current datetime and current datetime + 1 hour?

For date I use below example:

defaults = {
                 'start': fields.Date.today(),
                 'finish': fields.Date.today(),
}

Upvotes: 2

Views: 5855

Answers (3)

m3asmi
m3asmi

Reputation: 1262

for the new api in odoo there is a default option in the fields, and you can create a function to set the default option two

start = fields.Datetime('Date', default=fields.Datetime.now,)
finish = fields.Datetime('Date', default='_get_finish_date',)

from datetime import datetime , timedelta
@api.one
def _get_finish_date(self):
    return  datetime.now() + timedelta(hours=1)

Upvotes: 1

Bhavesh Odedra
Bhavesh Odedra

Reputation: 11143

Try with following code:

from datetime import datetime, timedelta

defaults = {
    'start': datetime.now(),
    'finish': datetime.now() + timedelta(hours=1),
}

And your field declaration will be start, finish as datetime data-type.

Upvotes: 1

CZoellner
CZoellner

Reputation: 14768

And following a solution for the "new" API, which i recommend you to use, because you tagged Odoo-9:

from datetime import datetime, timedelta

from openerp import models, fields, api
# from odoo import models, fields, api  # for Odoo 10+


class MyClass(models.Model):
    _name = "my.class"

    start = fields.Date(string="Start", default="_default_start")
    finish = fields.Date(string="Finish", default="_default_finish")

    @api.model
    def _default_start(self):
        return fields.Date.context_today(self)

    @api.model
    def _default_finish(self):
        finish = datetime.now() + timedelta(hours=1)
        return fields.Date.context_today(self, timestamp=finish)

Upvotes: 1

Related Questions