Skip ke Konten
Menu
Pertanyaan ini telah diberikan tanda
2 Replies
2738 Tampilan

Hi, I've created a custom module which represents something similar to a school, with three models that represent teachers, courses and classes (course = literature, class = literature 2020-21 in 9th grade). 

DOCENTE.PY (docente=teacher) -> _name = 'piani_formazione.docente'
CORSO.PY (corso=course) -> _name = 'piani_formazione.corso'
EDIZIONE.PY (edizione=class) -> _name = 'piani_formazione.edizione'

Obviously, every course has multiple classes meanwhile every class is related to a specific course

CORSO.PY (corso=course) -> edizioni_corso = fields.One2many('piani_formazione.edizione', 'edizione_corso', string="Edizioni del corso erogate:")  
EDIZIONE.PY (edizione=class) -> edizione_corso = fields.Many2one('piani_formazione.corso', string="Edizione del corso:", required=True)

I've managed to state that every teacher is qualified to teach some courses (and viceversa that every course can be teached by some teachers)

DOCENTE.PY (docente=teacher) -> abilitazioni = fields.Many2many('piani_formazione.corso', 'tabella_docenti_corsi', 'codice_fiscale', 'codice', string="Corsi che è abilitato ad erogare:")    
CORSO.PY (corso=course) -> docenti_corso = fields.Many2many('piani_formazione.docente', 'tabella_docenti_corsi', 'codice', 'codice_fiscale', string='Docenti abilitati ad erogare edizioni del corso:')

and I've stated that every class has just one teacher (meanwhile a teacher can teach different classes)

DOCENTE.PY (docente=teacher)  -> docente_edizioni = fields.One2many('piani_formazione.edizione','edizione_docente',string="Edizioni che eroga il docente")
EDIZIONE.PY (edizione=class) -> edizione_docente = fields.Many2one('piani_formazione.docente', string="Docente che eroga il corso", required=True)

If i leave the code like it is, then while choosing which teacher will teach a class it could be selected any teacher. What I would like to do is to hide the teachers that cannot teach the class (because they are not qualified to teach the related course) from the possible choices in the class form view (in the many2one field named "edizione_docente"). How could I do it?

I saw online that the operator '=' works as a 'contains', so I tried adding to the Many2one field a domain such as the following, but now the drop down list of the field is always empty

EDIZIONE.PY (edizione=class) -> edizione_docente = fields.Many2one('piani_formazione.docente', string="Docente che eroga il corso", required=True, domain="[('abilitazioni','=','edizione_corso')]" )    

Avatar
Buang
Jawaban Terbai

Hi,

To hide some field in Many2one Here is an example

There are two fields source_location_id and destination_location_id, both of which are Many2one fields referencing the res.country model.

source_location_id = fields.Many2one('res.country',string='Source Location')
destination_location_id = fields.Many2one('res.country',string='Destination Location', domain="[('id', '!=', ""source_location_id)]")

The destination_location_id field has a domain set on it, which filters out the value of the source_location_id field from the dropdown list of destination_location_id. This ensures that the user cannot select the same country as both the source and destination

https://www.cybrosys.com/blog/how-to-apply-dynamic-domain-for-relational-fields-in-odoo-16

Regards

Avatar
Buang
Jawaban Terbai

Hi, can you try : 

 domain="[('abilitazioni', 'in', [edizione_corso,])]"


Gus

Avatar
Buang
Post Terkait Replies Tampilan Aktivitas
2
Feb 25
40424
2
Nov 22
2811
1
Feb 22
7847
2
Des 21
4104
0
Okt 21
2258