У меня есть следующий стол в Odoo, названный отношением, который исходит из отношения между столом девушки и мальчиком стола:Как установить этот конкретный домен на OpenERP/Odoo?
| girl_id | boy_id | relationship_type |
| 1 | 2 | друзья |
| 1 | 3 | братья и сестры |
| 2 | 7 | любители |
Итак:
- В таблице девушки есть поле отношений, которое является one2many указывает на отношения таблицы.
- В настольном мальчике есть полевые отношения, которое является одним большим числом , указывая на отношение таблицы.
- В таблице соотношение есть два поля, girl_id и boy_id, оба указывающие на таблицы девушка и мальчик соответственно.
Сценарий:
В формах мальчика и девочки есть полевые отношения. Когда я добавляю новые отношения для девочки или мальчика, открывается форма для заполнения полей отношения таблицы (girl_id, boy_id и relationship_type). Представьте, что я в форме девушки, я нажимаю на добавление новых отношений и форма открывается. Я реализовал это, чтобы не видеть girl_id (он невидим, но содержит идентификатор текущей девушки). Поэтому я вижу только два поля (boy_id и relationship_type).
Что я хочу:
Продолжая с примером, если я открываю выпадающий boy_id, я буду видеть все мальчик, даже те, кто уже связанные с этой девушкой. Например, если я добавляю отношения к девушке с идентификатором 1, я не должен видеть мальчиков с идентификаторами 2 и 3, если девушка такая, у которой есть id 2, я не должен видеть мальчика с идентификатором 7.
Моя попытка
Я создал два поля в отношениях таблицы, названный boys_of_the_girl (one2many, связанные с 'girl_id.relationships') и girls_of_the_boy (one2many, связанные с 'boy_id.relationships').
Мой код: (Пример: создание отношений для девушки)
<field name="girl_id" invisible="1"/>
<field name="boys_of_the_girl" invisible="1"/>
<field name="boy_id" domain="[('id', 'not in', boys_of_the_girl)]"/>
<field name="relationship_type"/>
Ошибка:
RuntimeError: максимальная глубина рекурсии превышена при вызове объекта Python
Может ли кто-нибудь помочь мне, пожалуйста? Спасибо!
EDIT
Таблица мальчик
relationships = fields.One2many(comodel_name='relationship',
inverse_name='boy_id',
string='Relationships')
Таблица девушка
relationships = fields.One2many(comodel_name='relationship', inverse_name='girl_id', string='Relationships')
T возможность отношения
boy_id = fields.Many2one(comodel_name='boy', string='Boy', required=True)
girl_id = fields.Many2one(comodel_name='girl', string='Girl', required=True)
relationship_type = fields.Char(string='Relationship type')
Думаю, вам нужно взять many2many вместо one2many, а m2m default предоставляет то, что вы хотите. –
Спасибо @EmiproTechnologies. Но поле many2many генерирует таблицу с только внешними идентификаторами, невозможно добавить к ней больше столбцов (например, relationship_type) – forvas
Можете ли вы показать мне структуру полей всех этих моделей?. –