1

ここに私のopenerpモデルの生年月日フィールドを示します

'date_of_birth': fields.date('Date of Birth'),

ユーザーが年を選択しやすいため、デフォルトの日付を 25 年前に変更する必要があります。( openerp jquery のデフォルトでは、現在の 20 年がリストにロードされており、ユーザーは以前の年を選択するのに時間がかかります)。

例:

_defaults = {
'date_of_birth':fields.date.context_today - 25years

この問題を実装するようにアドバイスしてください(Python関数が私の要件に適していると思われる場合)

4

3 に答える 3

1

dateutil モジュールを確認してください。インストールする必要があります。この種の計算を簡単にします。

>>> import datetime
... from dateutil import relativedelta
... 
... today = datetime.date.today()
... past = today + relativedelta.relativedelta(years=-25)
... print(today, past, sep='\t')
2013-05-05  1988-05-05
于 2013-05-05T14:58:34.807 に答える
1

「生年月日」が文字列の場合は、ここにリンクの説明を入力strptime を使用して、日時オブジェクトに変換できます。そのオブジェクトを使用すると、 timedeltaモジュールを使用して 25 年を差し引くのがはるかに簡単になります

すぐに 25 年を引くことはできません。手動で何日かを数えなければなりません。

しかし、最終的には次のようになります。

import datetime

my_date = datetime.datetime.strptime('1 Feb 2013', '%d %b %Y')  # converts the date 1 Feb 2013 into a datetime object
new_date = my_date - datetime.timedelta(days=36000)  # Substracts 36000 days
print(new_date.strftime('%d %b %y'))  # prints: '11 Jul 1914'
于 2013-05-05T14:55:26.327 に答える
0

このコードで動作するようになりました

def _dob(self, cr, uid, context=None):
    today = datetime.date.today()
    past = today + relativedelta.relativedelta(years= -25)
    return past.strftime('%Y-%m-%d')

すべての回答に感謝

于 2013-05-06T04:19:36.887 に答える