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

In my module I have an entity "Person" with two fields "date_of_birth" (Date)  and "age" (Integer). How can I get the age of a Person from the date of birth?

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

Hi Ernesto:

Make "age" a computed field with the following settings: 

  • Readonly = True

  • Stored = False

  • Copied = False

  • Depends on: date_of_birth

The code for the computation would be

for record in self:
  if record.date_of_birth:
today = datetime.date.today() # Check if the date has passed this year if today.strftime("%m%d") >= record.date_of_birth.strftime("%m%d"):
record['age'] = today.year - record.date_of_birth.year
else: record['age'] = today.year - record.date_of_birth.year - 1
else:
record['age'] = 0


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

Hi Ernesto:
You can do like this:


from dateutil.relativedelta import relativedelta

age = fields.Integer(string="Age", compute="_calculate_age")

   @api.depend('date_of_birth')
    def _calculate_age(self):

          if self.date_of_birth:

             d1 = self.date_of_birth

            d2 = datetime.date.today()

           self.age = relativedelta(d2, d1).years


Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 9 18
4702
1
thg 1 17
5400
0
thg 3 25
1771
4
thg 4 24
174770
2
thg 3 24
2236