Сообщение #1
06 июня 2018, 17:36
|
One2many и related поля
В определенных случаях есть необходимость вывести определенную запись на форму из отношения One2many.
Например имеем две модели, главную и подчиненную, где в главной имеется реляционное отношение One2many к подчиненной таблице.
Child:
fields1=fields.Char()
fields2=fields.Integer()
parent=Many2one('parent')
Parent:
fields1=fields.Integer()
fields_child1=fields.Char(related='child.fields1')
child=One2many('child','parent')
Для выборки определенной записи из подчиненной таблицы необходимо в поле child добавить domain
child=One2many('child','parent',domain=[('id','=',id_child)])
где id_child является номером записи из подчиненной таблицы
fields_child1 — показывает с возможностью редактирование запись из подчиненной таблицы
При необходимости в domain можно записать функцию примерно так:
child=One2many('child','parent',domain=_my_funct)
Например имеем две модели, главную и подчиненную, где в главной имеется реляционное отношение One2many к подчиненной таблице.
Child:
fields1=fields.Char()
fields2=fields.Integer()
parent=Many2one('parent')
Parent:
fields1=fields.Integer()
fields_child1=fields.Char(related='child.fields1')
child=One2many('child','parent')
Для выборки определенной записи из подчиненной таблицы необходимо в поле child добавить domain
child=One2many('child','parent',domain=[('id','=',id_child)])
где id_child является номером записи из подчиненной таблицы
fields_child1 — показывает с возможностью редактирование запись из подчиненной таблицы
При необходимости в domain можно записать функцию примерно так:
child=One2many('child','parent',domain=_my_funct)
def _my_funct(self):
if self.fields1==1:
id=self.env['child'].sudo().search([('fields2,'=',self.fields1)],limit=1).id # получаем id child по условию parent
return [('id','=',id)]
Последний раз редактировал пользователь
aladkoi
-
06 июня 2018, 17:37