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

Hello Expert,

how to set the date_end field to current day +6days, for instance the value would be date_start = 09/25/2014 then date_end = 10/01/2014. Thanks

python----

from datetime import datetime
from dateutil.relativedelta import relativedelta
from osv import osv, fields
from openerp import tools

class test_product(osv.Model):
    _name = "test.product"

    _columns = {

        'date_start': fields.date('Date End'),
        'date_end': fields.date('Date End'),

}

_defaults= {
    'date_start': lambda *a: time.strftime('%Y-%m-%d'),
    'date_end': lambda *a: (datetime.today() + relativedelta(days=6)).strftime('%Y-%m-%d'),
    }

XML---

                <field name="date_start"/>
                <field name="date_end"/>

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

Also, we can use timedelta 

For the manipulation of date, we can use timedelta to add the day by 5. For more info: https://docs.python.org/2/library/datetime.html#timedelta-objects

from datetime import datetime, timedelta

_defaults={
          'date_start': lambda *a:datetime.now().strftime('%Y-%m-%d'), 
          'date_end': lambda *a:(datetime.now() + timedelta(days=(6))).strftime('%Y-%m-%d'),
}

Ảnh đại diện
Huỷ bỏ
Tác giả

Thanks sir

Hello Atchuthan, i am also facing some issue.
deadline = fields.Datetime('Deadline', help="Date by which the person can open the survey and submit answers",
oldname="date_deadline", default=time.strftime('23:59:59'))
above field not working. My time should be 23:59 while date is manual

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

Hello,

 

Please make sure that you've made following imports: 

from datetime import datetime
from dateutil.relativedelta import relativedelta

-than change your code to:

_defaults= {
    'date_start': lambda *a: time.strftime('%Y-%m-%d'),
    'date_end': lambda *a: (datetime.today() + relativedelta(days=6)).strftime('%Y-%m-%d'),
    }

 

regards,

Ảnh đại diện
Huỷ bỏ
Tác giả

Hi Temur, no default value when heating create, even the date_start field, no value appeared. Please see above code modified Thanks for the response and time really appreciate your help

You're missing one more import: "import time" you should either add this import, OR use "datetime.today().strftime('%Y-%m-%d')" instead of "time.strftime('%Y-%m-%d')". As you've already used "time" in your question code I didn't mention this import in my answer, I assumed that you had it already.

and more correct import for osv will be: "from openerp.osv import osv" instead of: "from osv import osv, fields"

sorry, "from openerp.osv import osv, fields"

Tác giả

Thanks you so much is working now

that's nice