You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo中创建固定行静态树视图:首列硬编码,其余列可编辑

在Odoo中创建固定行数列的可编辑Tree视图

要实现固定行数、首列硬编码预设值、其余列可编辑的Tree视图,可通过以下步骤完成:

1. 定义业务模型

创建包含三个字段的模型,首列设为只读存储固定值,另外两个字段设为可编辑状态:

from odoo import models, fields, api

class CustomStaticTable(models.Model):
    _name = 'custom.static.table'
    _description = '固定行静态表格'

    fixed_value = fields.Char(string='固定值', readonly=True)
    editable_field1 = fields.Char(string='可编辑字段1', required=True)
    editable_field2 = fields.Float(string='可编辑字段2', required=True)

    def generate_fixed_rows(self):
        """生成固定行数的记录,首列使用预设值"""
        # 可选:清空现有记录(根据业务需求决定是否保留历史数据)
        # self.unlink()
        
        # 预设的固定值列表,对应每行的首列内容
        preset_values = ['行1', '行2', '行3']
        for val in preset_values:
            self.create({
                'fixed_value': val,
                'editable_field1': '',
                'editable_field2': 0.0
            })
        # 刷新视图显示新生成的行
        return {'type': 'ir.actions.act_window_ref', 'ref': 'action_custom_static_table'}

2. 配置Tree视图

创建可编辑Tree视图,添加自定义按钮生成固定行,同时设置首列字段为只读:

<odoo>
    <!-- Tree视图定义 -->
    <record id="view_custom_static_table_tree" model="ir.ui.view">
        <field name="name">custom.static.table.tree</field>
        <field name="model">custom.static.table</field>
        <field name="arch" type="xml">
            <tree editable="bottom">
                <header>
                    <!-- 自定义按钮触发固定行生成 -->
                    <button 
                        name="generate_fixed_rows" 
                        string="生成固定行" 
                        type="object" 
                        class="oe_highlight"
                    />
                </header>
                <field name="fixed_value" readonly="1"/>
                <field name="editable_field1"/>
                <field name="editable_field2"/>
            </tree>
        </field>
    </record>

    <!-- 动作定义 -->
    <record id="action_custom_static_table" model="ir.actions.act_window">
        <field name="name">固定行静态表格</field>
        <field name="res_model">custom.static.table</field>
        <field name="view_mode">tree</field>
        <field name="view_id" ref="view_custom_static_table_tree"/>
    </record>

    <!-- 菜单入口 -->
    <menuitem 
        id="menu_custom_static_table" 
        name="固定行静态表格" 
        parent="base.menu_custom" 
        action="action_custom_static_table"
    />
</odoo>

3. 功能说明

  • 进入视图后,点击生成固定行按钮,系统自动创建预设行数的记录,首列显示硬编码的固定值(如"行1"、"行2"、"行3");
  • 第二、第三列为可编辑状态,用户可直接输入内容;
  • 编辑完成后,点击Tree视图的保存按钮(或按回车),系统保存包含三列数据的所有记录;
  • 如需调整固定行数,修改模型generate_fixed_rows方法中的preset_values列表即可。

可选优化

  • 若希望打开视图时自动生成固定行,可在模型的default_get方法或视图的on_load事件中调用generate_fixed_rows;
  • 若需限制用户手动添加/删除行,可在Tree视图中设置create="false"和delete="false",仅通过自定义按钮控制行的生成。

内容的提问来源于stack exchange,提问作者Atiq Baqi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 13:32:55