Odoo域属性如何工作?

时间:2018-06-04 02:42:37

标签: views odoo

我的odoo'我有一个One2many的关系。学生。学生'该模型

result_ids = fields.One2many("schoolresults.detail", "student_id", "SchoolResults")

" schoolresults.detail" model具有以下Many2One关系字段

student_id = fields.Many2one("student.student", "Student", ondelete="cascade")
subject_id = fields.Many2one("schoolresults.subject", "Subject")

问题是,在添加结果ids字段时,可以将某个主题两次添加到同一个学生并使用不同的分数。 我试着让sql_constrait' UNIQUE(student_id,subject_id)'在schoolresults.detail 模型但它会引发错误。 如果已经选择了主题,我不希望主题出现在选择字段上。 我认为答案是arround域属性, 这张图片可能包含我的语言错误。 enter image description here

1 个答案:

答案 0 :(得分:0)

您应该在one2many字段 result_ids 的onchange上返回一个域名。 例如:

ids_list = []
@api.onchnage('result_ids')
def onchange_result_ids(self):
    for record in self.result_ids:
        if record.subject_id:
           ids_list.append(record.subject_id.id)

    return {'domain': {'subject_id': [('id', 'not in', ids_list)]}}