openerp odoo v11.0模型名称错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openerp odoo v11.0模型名称错误相关的知识,希望对你有一定的参考价值。

我正在尝试为库存管理建立一个名为kroshu的odoo模块我在尝试安装我的模块后编写了所需的模型和视图odoo服务器显示此消息

  File "C:Program Files (x86)Odoo 11.0serverodooaddonsaseir  ir_actions.py", line 128, in _check_model
  raise ValidationError(_('Invalid model name %r in action definition.')  % action.res_model)
   odoo.tools.convert.ParseError: "Invalid model name 'kroshu.product' in  action definition.
    None" while parsing file:/c:/program%20files%20(x86)/odoo%2011.0/server/odoo/addons/kroshu_khalil_kasmi/data/actions.xml:5, near
<record model="ir.actions.act_window" id="action_kroshu_product">
       <field name="name">Product</field>
       <field name="res_model">kroshu.product</field>
       <field name="view_mode">tree,form</field>
    </record>

我的模块名为Product.py:

from odoo import models,fields

class Product(models.Model):
    _name = 'kroshu.product'

    product_id = fields.Char("product id",required =True)
    product_name = fields.Char("product name",required = True)
    product_description = fields.text("product description")

    product_type =  fields.One2many("product.type","product_type_id",string="type")
    product_category = fields.One2many("product.category","product_category_id",string="category")

    quantity_on_hand = fields.Integer("quantity on hand",required =True)
    forcasted_quantity = fields.Integer("forcasted quantity")

    location_in_stock = fields.Char("product location in stock")

    barcode = fields.text("barcode")

    vendor = fields.One2many("product.vendor","vendor_id",string="vendor/manufacturer")

    cost = fields.Float("cost")

    stock = fields.One2many("kroshu.stock","stock_id",string="in stock")

我的action_views.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<menuitem name="Kroshu" id="kroshu_root_menu"/>

<record model="ir.actions.act_window" id="action_kroshu_product">
    <field name="name">Product</field>
    <field name="res_model">kroshu.product</field>
    <field name="view_mode">tree,form</field>
</record>

<record model="ir.actions.act_window" id="action_kroshu_product_category">
    <field name="name">Product Category</field>
    <field name="res_model">product.category</field>
    <field name="view_mode">tree,form</field>
</record>
........ still more lines

我的__ init __ .py文件:

from . import category
from . import product
答案

从你上面所说的。问题很可能在你的__init__.py文件中导入product,但该文件名为Product.py。我也不确定Product.py中的缩进,但这可能只是复制和粘贴到堆栈溢出的格式。

另一答案

在编写新模块时,为了调试常规设置,可能有助于先简化然后逐步添加,保持工作正常。

在您的情况下,首先创建一个具有一个字段的模型(如name)并使其工作。然后,添加更多简单字段,视图和操作。确保您可以为新模型创建记录。

然后,添加关系字段,确保在目标模型所在的清单文件中包含依赖项(在您的情况下,product用于product. product等)

最后,确保您的第二个模型kroshu.stock也需要遵循相同的方法。

另一答案

模型定义中有错误:

barcode = fields.text("barcode")

代替 :

barcode = fields.Text("barcode")

将文本更改为文本,您的代码将变得更好。

第二个解决方案:尝试重命名您的模型名称,进行更改

_name = 'kroshu.product'

例如:

_name = 'kroshuproduct'

例如,Odoo通常使用此表达式来指定模型产品位于de module name kroshup中。

当您在模型定义中有错误时,通常会发生此错误。检测您的错误,评论所有字段并单独测试每个字段。

希望这对你有所帮助!大!

以上是关于openerp odoo v11.0模型名称错误的主要内容,如果未能解决你的问题,请参考以下文章

odoo widgets.js 笔记

ODOO学习笔记五:Odoo模块标准组成

Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库

OpenERP ODOO 千分位设置

OpenERP|ODOO高德地图应用

从 Odoo 8 开始,访问另一个数据库中 OpenERP 对象的数据