как вызвать python метод из XML действия сервера? - PullRequest
1 голос
/ 23 января 2020

Я добавил метод в product.template для вычисления строк формы имени продукта некоторых пользовательских полей, связанных с другими моделями, я добавил store = True в поле имени, чтобы я мог искать его, но когда связанные поля изменить в своих моделях имя поля не изменится, поэтому мне нужно добавить действие сервера в пункт меню под названием «обновить имя продукта», который будет расположен в приложении cutome, где есть соответствующие поля, если я нажал на этом пункте меню, он запустил метод именования и получить новое обновленное поле на имя продукта, как я могу сделать это здесь код

class autopart(models.Model):
_inherit = 'product.template'

@api.multi
@api.depends('item','dsc', 'drc', 'org','car','model', 'manf','year')
def naming(self):
    for rec in self:
        if rec.year:
            rec.name = " ".join(
                [rec.item and rec.item.name or "", rec.drc and rec.drc.name or "", rec.dsc and rec.dsc.name or "",
                 rec.org and rec.org.name or "", rec.manf and rec.manf.name or "", rec.car and rec.car.name or "",
                 rec.model and rec.model.name or "",rec.year and rec.year.name or ""
                 ])
        else:
            rec.name = " ".join(
                [rec.item and rec.item.name or "", rec.drc and rec.drc.name or "", rec.dsc and rec.dsc.name or "",
                 rec.org and rec.org.name or "", rec.manf and rec.manf.name or "", rec.car and rec.car.name or "",
                 rec.model and rec.model.name or "",
                 ])
 name = fields.Char(string="Name", compute=naming ,store=True , required=False,)

здесь menuitem

 <menuitem id="update_products_menu" name="Update products" parent="master.menu_category_main" sequence="1" action="action_update_products"/>

действие сервера

    <record id="action_update_products" model="ir.actions.server">
        <field name="name">action_update_products</field>
        <field name="type">ir.actions.server</field>
        <field name="model_id" ref="model_updateproducts"/>
        <field name="state">code</field>
        <field name="code">how can i run naming methode from product.template here</field>
    </record>

1 Ответ

2 голосов
/ 23 января 2020

Ваши вычислительные поля зависят от имени других элементов, в odoo вы можете зависеть от связанных полей, подобных этому, и вы можете go так глубоко, как хотите, и не только много2, но вы также можете использовать X2many

@api.depends('item.name','dsc.name', 'drc.name', 'org.name','car.name','model.name', 'manf.name','year.name')

Таким образом, когда вы меняете одно из этих имен даже в каком-либо другом виде, поле будет перерассчитано в фоновом режиме. Надеюсь, это поможет вам не создавать кнопку для этой задачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...