Odoo 10 - Подсчет значений связанных записей

В Odoo 10 я создал свое собственное приложение (используя новую функцию студии), однако я столкнулся с проблемой при попытке вычислить данные между записями, принадлежащими разным представлениям.

В сценарии у меня есть две модели (модель A и модель B), где записи из модели B подключаются к записям из модели A через реляционное поле many2one. В модели B есть поле, в котором подсчитывается введенное в него числовое значение.

В идеале я хотел бы получить некоторую форму автоматизированного действия / действия сервера, которое перебирает записи в модели A, а затем перебирает связанные записи в модели B, складывая значения ранее упомянутого поля числового значения и устанавливает значение поля в модели A, равное приравненному номеру, прежде чем перейти к следующей записи.

Например, скажем, имена полей:
Модель A = x_a
- Поле идентификатора модели A = x_id_field
- Целевое поле для вычисляемого значения = x_compute

Модель B = x_b
- many2one field = x_a_id
- числовое поле = x_value_field

Я попытался использовать автоматические действия для выполнения некоторого базового кода Python (потому что я думал, что это будет так же просто, как вложенный цикл), однако все мои попытки были неудачными из-за незнания того, как перебирать записи в odoo и как для доступа к другим моделям и их записям (из python).

Как мне это сделать?


person h3kz    schedule 13.02.2017    source источник


Ответы (1)


В идеале я хотел бы получить некоторую форму автоматизированного действия / действия сервера, которое перебирает записи в модели A, а затем перебирает связанные записи в модели B, складывая значения ранее упомянутого поля числового значения и устанавливает значение поля в модели A, равное приравненному номеру, прежде чем перейти к следующей записи.

Создать автоматическое действие со связанным документом Модель = модель a На вкладке Действия создайте действие сервера:

model_b_records = self.env['model_b'].search([('many2one_field', '!=', False)])

for record in model_b_records:
    record.many2one_field.target_field_for_computed_value = record.numerical_field

Сохраните действие сервера и выполните его.

Код должен быть понятным, любые вопросы не стесняйтесь задавать и комментировать ниже.

person George Daramouskas    schedule 27.02.2017