Odoo писать в поле, не являющееся частью текущего представления - PullRequest
1 голос
/ 14 июля 2020

Я хочу обновить поле done_date, которое является частью представления формы project.task, при вытягивании плитки Kanban на этапе, который обозначен как последний этап.

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

Поле done_date должно быть написано, даже не будучи частью представления Kanban.

models.py

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class project_set_end_date(models.Model):
    inherit = 'project.task.type'

    last_stage = fields.Boolean(string="Final stage")

class project_set_end_date(models.Model):
    _inherit = 'project.task'

   @api.onchange('stage_id')
   def _set_end_date(self):
       if self.stage_id.last_stage:
           self.date_finished = fields.Datetime.now()

views.py

<odoo>
<data>
<!-- explicit list view definition -->
<record model="ir.ui.view" id="project_set_end_date">
  <field name="name">project.task.type.form</field>
    <field name="model">project.task.type</field>
    <field name="inherit_id" ref="project.task_type_edit"/>
    <field name="arch" type="xml">
      <xpath expr="//field[@name='fold']" position='after'>
      <field name="last_stage"/>
      </xpath>
  </field>
</record>
</data>
</odoo>

1 Ответ

2 голосов
/ 14 июля 2020

Odoo не записывает в поле, которого нет в текущем представлении. Поэтому я предлагаю добавить поле, но с атрибутом invisible = True , чтобы его не отображать:

<field name="your_field" invisible="True"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...