Je crée un module pour la gestion des étudiants dans "Odoo9", dans une partie de ce module je veux calculer la note moyenne qu'un étudiant obtient dans un sujet comme "maths". J'essaie d'atteindre qu'en utilisant ce code, mais j'ai un problème en calculant le "Avg-Maths" immédiatement après avoir rempli "Maths-1" et "Maths-2", il ne peut être calculé qu'après avoir sauvegardé le profil de l'étudiant.Peut-être quelqu'un question ici? et comment puis-je résoudre ce problème? Champs calculés Odoo9
#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")
Soit le champ devrait accepter l'entrée ou il devrait être calculé, mais dans votre cas, avg est calculatrice et les marques de maths et de physique sont entrées. Ne mélange pas les choses. Vous devez ajouter la moyenne de ces sujets dans le modèle parent. –
Cela signifie que je ne peux pas afficher le champ moyen dans la vue result_ids, il sera affiché dans la vue des étudiants? – pourjour