我在"Odoo9“中创建了一个学生管理模块,在该模块的一部分中,我想计算一个学生在像”数学“这样的科目中获得的平均分数。我正在尝试使用这段代码来实现这个目标,但是在填写”数学-1“和”数学-2“之后,我在计算”Avg-数学“时遇到了问题,只有在拯救了学生profile.Can之后,才能计算出它--有人能在这里认识到这个问题吗?我怎么才能解决这个问题?

#student class
class student_student(models.Model):
'
'
'
result_ids = fields.One2many("schoolresults.detail", "student_id", "School Results")
'
'
'
class schoolresults_detail(models.Model):
_name = "schoolresults.detail"
_description = "Student's results."
student_id = fields.Many2one("student.student", "Student", ondelete="cascade")
subject_id = fields.Many2one("schoolresults.subject", "Subject")
result_manual = fields.Float("Result")
result = fields.Float(compute='_compute_value',store=True)
manual = fields.Boolean(compute='_is_manual', default=False)
@api.one
@api.depends('manual')
def _is_manual(self):
self.manual = self.subject_id.my_id
@api.one
@api.depends('result_manual','subject_id','subject_id.my_id')
def _compute_value(self):
self.ensure_one()
results = self.env['schoolresults.detail'].search([])
total = 0
for data in results:
total += data.result_manual
for data in results:
#if the subject is the average of others
if data.subject_id.my_id:
data.result = total
class schoolresults_subject(models.Model):
_name = "schoolresults.subject"
_description = "Student's subjects."
my_id = fields.Integer(default=0)
name = fields.Char("Subject")发布于 2016-08-11 07:42:21
将student_id.result_ids.result_manual添加到_compute_value上的依赖列表中。这应该会触发一次重新计算。
发布于 2016-08-11 18:02:23
我认为,在计算了值之后,应该将其分配给结果字段。
@api.one
def _compute_method(self):
# compute average for this record
self.result = calclated_value但是我没有看到您将值赋值到结果字段?!!试着分配它应该做的事情
https://stackoverflow.com/questions/38879919
复制相似问题