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

Guys what i did wrong... im getting message = "TypeError: 'int' object is not iterable"


age = fields.Integer(string="Age", required=False, default="1")

group = fields.Char(string="Group", compute="_compute_group", store=True)

total = fields.Char(string="Total" )

totalage = fields.Integer(string="Totalage", compute="_calculate_total_age", store=True)

@api.one

@api.depends('age')

def _calculate_total_age(self):

currentage = 0

for number in self.age:

currentage = currentage + number.age

self.totalage = currentage

Ảnh đại diện
Huỷ bỏ

What do you want yo compute? No sense a loop with integer field.

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

Try this, change for loop like this, for number in self: 

or try the below one

age = fields.Integer(string="Age", required=False, default="1")
group = fields.Char(string="Group", compute="_compute_group", store=True)
total = fields.Char(string="Total" )
totalage = fields.Integer(string="Totalage", compute="_calculate_total_age", store=True)

@api.one
@api.depends('age')
def _calculate_total_age(self):
currentage = 0
  currentage = currentage + self.age
self.totalage = currentage
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

you defined age as an integer.

i dont understand why you used for number in self.age:  

This format ( for i in variable ) is used if variable is an array or string
Try these instead :
for number in range(self.age):

     //number will have values from 0 - self.age

or 

if self.age :

     // if you want to check there is value in field age

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

@api.depends('age')
def _calculate_total_age(self):
if self.age:
self.totalage=self.age


Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 10 21
2165
0
thg 9 21
2844
0
thg 12 21
1782
1
thg 12 21
5803
2
thg 3 24
1776