设置 One2many 字段的默认值

pou*_*our 0 python-2.7 odoo odoo-9

我有一个类student_student,它的 one2many 字段result_ids定义如下:

    result_ids = fields.One2many("schoolresults.detail", "student_id", "School Results", default="_get_subjects")
Run Code Online (Sandbox Code Playgroud)

def _get_subjects(self):
     cr = self.pool.cursor()
     self.env
     return self.pool.get('schoolresults.subject').search(cr, self.env.uid, [])
Run Code Online (Sandbox Code Playgroud)

在另一边我有一堂课schoolresults_subject

class schoolresults_subject(models.Model):
    _name = "schoolresults.subject"
    _description = "Student's subjects."
    name = fields.Char("Subject")

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 = fields.Float("Result", compute='_compute_value', store=True)
Run Code Online (Sandbox Code Playgroud)

我想做的是,每当用户尝试使用 one2many 字段中的参数创建新的学生个人资料时,用上一堂课的科目列表填充 result_ids default。但每当我尝试创建学生档案时,我都会收到此错误Wrong values for student.student.result_ids。请问有什么办法可以实现这一点吗? 在此输入图像描述

附言。我正在使用 Odoo 9

CZo*_*ner 5

我没有完全理解您的要求,但请尝试以下操作:

def _get_subjects(self):
    subjects = self.env['schoolresults.subject'].search([])
    details = self.env['schoolresults.detail']
    for subject in subjects:
        details |= details.new({'subject_id': subject.id})
    return details
Run Code Online (Sandbox Code Playgroud)

但解释一下错误消息:您返回的是 RecordSetschoolresults.subject但您的字段result_ids具有 comodel schoolresults.detail。那是错误的;-)