跳至内容
菜单
此问题已终结
2 回复
2633 查看

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

形象
丢弃
最佳答案

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

形象
丢弃
最佳答案

Hi, can you try : 

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


Gus

形象
丢弃
相关帖文 回复 查看 活动
2
2月 25
40149
2
11月 22
2708
1
2月 22
7738
2
12月 21
3988
0
10月 21
2160