avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • python
  • 大模型应用
  • 软件/工具导航页
  • 关于
Home odoo13教程-wizards的使用
文章

odoo13教程-wizards的使用

Posted 2021-12-21 Updated 2024-12- 17
By Administrator
10~13 min read

向导一般通过接受用户的输入,来接受数据,然后在向导模型中进行相应的数据处理。


1.wizards(向导)的效果展示

定义向导后,在通过动作关联到向导,效果如下:

(1.)会在tree或者form页面出现如下按钮

image-20201220235248720

image-20201220235349780

(2.)点击按钮可出现如下的表单

image-20201220235527131

在定义的向导中可以获取到用户的context:tree选中的多条数据,或者form的单条数据

2. wizards的定义方法

wizards模型的定义

wizards的模型继承的是models.TransientModel,其内的数据并不会在数据库中永久存储。

在单独的文件内定义以下内容,并记得引入

# -*- coding: utf-8 -*-
from odoo import models, fields, api

class Wizard(models.TransientModel):
    _name = 'academy.wizard'
    _description = "Wizard: Quick Registration of Attendees to Sessions"

    def _default_sessions(self):
        return self.env['academy.lecture'].browse(self._context.get('active_ids'))

    session_ids = fields.Many2many('academy.lecture',
        string="Sessions", required=True, default=_default_sessions)
    attendee_ids = fields.Many2many('res.partner', string="Attendees")

    def subscribe(self):
        for session in self.session_ids:
            session.attendee_ids |= self.attendee_ids
        return {}

tip:

  1. 在上述的代码中,subscribe是由下边xml中定义的按钮触发的。

  2. 通过self._context.get('active_ids')可以获取到用户选取的数据

在xml中配置act_window

下面的代码定义了个一个act_window,来给action绑定的模型(binding_model)增加一个动作(在绑定的模型中的tree和form视图的动作按钮中可以看到)。记得引入文件

<record model="ir.ui.view" id="wizard_form_view">
        <field name="name">wizard.form</field>
        <field name="model">academy.wizard</field>
        <field name="arch" type="xml">
            <form string="add attend">
                <group>
                    <field name="session_ids"/>
                    <field name="attendee_ids"/>
                </group>
                <footer>
                        <button name="subscribe" type="object"
                                string="Subscribe" class="oe_highlight"/>
                        or
                        <button special="cancel" string="Cancel"/>
                    </footer>
            </form>
        </field>
    </record>

    <act_window id="launch_session_wizard"
                name="添加出席学生"
                binding_model="academy.lecture"   
                res_model="academy.wizard"
                view_mode="form"
                target="new"/>

通过上边的代码,便可以实现一个向导,向导一般通过接受用户的输入,来接受数据,然后在向导模型中进行相应的数据处理。

python
odoo
License:  CC BY 4.0
Share

Further Reading

Jun 18, 2025

python包管理神器:UV

目前 UV 因其优势,已被大量的python开源项目使用。简单整理了一些命令,不到 UV 功能的 1/5,更多功能慢慢探索。 安装 # mac brew install uv ​ # win powershell -c "irm https://astral.sh/uv/install.ps1 |

May 27, 2025

python中一些很好用的工具类模块

contextlib 此模块为 with 语句提供了一些工具,简化了 with的使用。 @contextlib.contextmanager 它将一个生成器函数转换为一个上下文管理器。而无需创建一个类或单独的 __enter__() 和 __e

Apr 21, 2025

Typing

类型注释让python 有了更好的编辑器提示功能。 基础使用 对函数参数和返回值,进行类型注释 def surface_area_of_cube(edge_length: float) -> str:    return f"The surface area of the cube is {6 *

OLDER

supervior安装及配置

NEWER

python中的time模块

Recently Updated

  • 使用 claude api遇到的问题
  • 一些开发中使用的 linux运维命令
  • python包管理神器:UV
  • ollama-大模型的部署与使用
  • 为jupyter增加可选的python内核

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy