You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Odoo 12自定义模块视图异常:仅显示ID列问题求助

解决Odoo 12模块Tree视图不显示自定义字段的问题

嘿,我帮你梳理下可能漏掉的关键步骤,你已经完成了模块scaffold和基础代码编写,但几个细节没处理好导致视图不显示字段:

1. 字段参数拼写错误(最可能的原因)

你在produk.py里定义字段时用了大写的String,但Odoo的字段参数是小写的string!这个错误会让系统无法识别字段的显示标签,甚至可能导致字段无法被正确注册,视图自然找不到这些字段。

修正后的produk.py代码:

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

class ProdukProduk(models.Model):
    _name = 'ms_produk.ms_produk'
    kd_produk = fields.Char(string='Kode Produk', required=True)  # 把String改成string
    nm_produk = fields.Char(string='Nama Produk', required=True)  # 同上

2. 检查__manifest__.py是否加载了视图文件

scaffold生成的__manifest__.py默认可能没包含你新增的master_produk_view.xml,Odoo不会自动加载未声明的视图文件。打开模块根目录下的__manifest__.py,确保data列表里有这个视图路径:

'data': [
    'views/master_produk_view.xml',
],

3. 修正视图定义的标准写法(可选但更稳妥)

虽然在ir.actions.act_window里直接写arch字段理论上可行,但Odoo更推荐单独定义ir.ui.view记录,避免优先级或识别问题。修改你的master_produk_view.xml为标准结构:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
        <!-- 单独定义Tree视图 -->
        <record id="view_ms_produk_tree" model="ir.ui.view">
            <field name="name">ms_produk.tree.view</field>
            <field name="model">ms_produk.ms_produk</field>
            <field name="arch" type="xml">
                <tree>
                    <field name="kd_produk"/>
                    <field name="nm_produk"/>
                </tree>
            </field>
        </record>

        <!-- 定义Form视图(如果需要的话) -->
        <record id="view_ms_produk_form" model="ir.ui.view">
            <field name="name">ms_produk.form.view</field>
            <field name="model">ms_produk.ms_produk</field>
            <field name="arch" type="xml">
                <form>
                    <sheet>
                        <group>
                            <field name="kd_produk"/>
                            <field name="nm_produk"/>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>

        <!-- 动作关联视图 -->
        <record id="masterproduk_menu_action" model="ir.actions.act_window">
            <field name="name">Master Produk</field>
            <field name="res_model">ms_produk.ms_produk</field>
            <field name="view_type">form</field>
            <field name="view_mode">tree,form</field>
            <!-- 显式关联视图(可选,让逻辑更清晰) -->
            <field name="view_ids" eval="[(5,0,0), (0,0, {'view_mode': 'tree', 'view_id': ref('view_ms_produk_tree')}), (0,0, {'view_mode': 'form', 'view_id': ref('view_ms_produk_form')})]"/>
            <field name="help" type="html">
                <p class="oe_view_nocontent_create">Create Product </p>
            </field>
        </record>

        <menuitem id="masterproduk_menu" name="MasterProduk"/>
        <menuitem id="Masterproduk_new_product_menu" parent="masterproduk_menu" name="New Produk" action="masterproduk_menu_action"/>
    </data>
</odoo>

4. 修正模块导入路径

你的__init__.py结构可能有问题,正确的导入层级应该是:

  • 模块根目录下的__init__.py
    # -*- coding: utf-8 -*-
    from . import models
    
  • models目录下的__init__.py
    # -*- coding: utf-8 -*-
    from . import produk
    

之前你在根目录的__init__.py直接导入produk是错误的,因为produk.pymodels子目录下,这样会导致模型无法被正确加载。

5. 重新升级模块并验证

完成以上修改后:

  1. 重启Odoo服务
  2. 进入Odoo后台,找到你的ms_produk模块,点击Upgrade(确保勾选升级选项)
  3. 查看Odoo日志,确认没有模型加载或视图解析的错误(比如Field not found这类提示)

做完这些步骤,你的Tree视图应该就能正常显示kd_produknm_produk字段了。

内容的提问来源于stack exchange,提问作者Ke Vin

火山引擎 最新活动