Odoo 域属性如何工作?
Odoo how domain attribute works?
我的 odoo 'student.student' 模型中有一个 One2many 关系,就是这样
result_ids = fields.One2many("schoolresults.detail", "student_id", "SchoolResults")
"schoolresults.detail" 模型具有以下 Many2One 关系字段
student_id = fields.Many2one("student.student", "Student", ondelete="cascade")
subject_id = fields.Many2one("schoolresults.subject", "Subject")
问题是在添加结果 ID 字段时,可能会向同一个学生添加一些科目两次,但分数不同。
我试图在 schoolresults.detail 上制作 sql_constrait 'UNIQUE (student_id, subject_id)'
模型,但会引发错误。
如果主题已经被选中,我不希望它出现在选择字段中。
我认为答案是围绕域属性,
这张图片可能会掩盖我的语言错误。
enter image description here
您应该 return 在您的 one2many 字段 result_ids 上更改域。
例如:
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)]}}
我的 odoo 'student.student' 模型中有一个 One2many 关系,就是这样
result_ids = fields.One2many("schoolresults.detail", "student_id", "SchoolResults")
"schoolresults.detail" 模型具有以下 Many2One 关系字段
student_id = fields.Many2one("student.student", "Student", ondelete="cascade")
subject_id = fields.Many2one("schoolresults.subject", "Subject")
问题是在添加结果 ID 字段时,可能会向同一个学生添加一些科目两次,但分数不同。 我试图在 schoolresults.detail 上制作 sql_constrait 'UNIQUE (student_id, subject_id)' 模型,但会引发错误。 如果主题已经被选中,我不希望它出现在选择字段中。 我认为答案是围绕域属性, 这张图片可能会掩盖我的语言错误。 enter image description here
您应该 return 在您的 one2many 字段 result_ids 上更改域。 例如:
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)]}}