Оооо, как работает атрибут домена? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть отношение One2many в моей модели odoo 'student .student', вот и все

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")

проблема заключается в том, что при добавлении поля идентификаторов результатов можно добавить один предмет дважды к одному и тому же ученику и с разными баллами.Я попытался сделать sql_constrait 'UNIQUE (student_id, subject_id)' для модели schoolresults.detail, но возникает ошибка.Я не хочу, чтобы тема появлялась в поле выбора, если оно уже выбрано.Я думаю, что ответ является атрибутом домена arround, это изображение может покрывать мои языковые ошибки. введите описание изображения здесь

1 Ответ

0 голосов
/ 04 июня 2018

вы должны вернуть домен при замене вашего поля 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)]}}
...