콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
2218 화면

I have an entity teacher with a Many2One field "substitute_teacher_id". The idea is that a teacher can replace other teacher, but a teacher should not be able to replace himself. How can I set that restriction in the teacher's model and/or view to ensure that a teacher cannot select a teacher with the same id as a substitute? This is my code

class Teacher(models.Model):
    _name = 'school.teacher'
    _description = 'School Teacher'

    name = fields.Char(string="Name")
    substitute_teacher_id = fields.Many2one('school.teacher', string="Sustitute")

아바타
취소
베스트 답변

You can do it using constrains:

from odoo.exceptions import ValidationError

@api.constrains('substitute_teacher_id')
def _check_substitute_teacher(self):
for teacher in self:
if teacher.id == teacher.substitute_teacher_id.id:
raise ValidationError('You cannot set yourself as Substitute Teacher.')

This will check the Substitute Teacher field and raise the message to the user if user has set himself/herself as Substitute Teacher.

아바타
취소
베스트 답변

Hi Ernesto:

You can define a domain for the Many2one field like so

substitute_teacher_id = fields.Many2one('school.teacher', string="Substitute", domain="[('id', '!=', id)]")


아바타
취소