Метод вычисления должен «записать» свои значения непосредственно в записи:
@api.multi
def compute_type(self):
context_type = self._context.get('type', True)
for record in self:
if context_type:
record.type = "situation"
else:
record.type = "final_count"
Помимо этого, ваше решение должно просто использовать значения по умолчанию для поля type
.Сначала измените ваше поле на обычное поле символа:
type = fields.Char(string="Type", readonly=True)
Небольшая подсказка: параметр string
в этом примере не нужен, потому что более новые версии Odoo будут использовать имя поля для создания меток (строкастановится меткой поля), например: name получит Name или partner_id получит Partner (_id будет удален).
Теперь измените контекст кнопки, используйте default_type
:
<button name="%(action_view_task_make_situation)d"
string="Create work situation" type="action" states="open"
context="{'default_type': 'situation'}"/>
<button name="%(action_make_general_final_count)d"
string="Create Final General Count" type="action" states="done"
context="{'default_type': 'final_count'}"/>
Префикс default_
в сочетании с именем поля будет использован при дальнейшем извлечении по умолчанию для создания записи.