openerp odoo v11.0模型名称错误

时间:2018-04-27 14:02:16

标签: module odoo

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

  File "C:\Program Files (x86)\Odoo 11.0\server\odoo\addons\base\ir  \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

3 个答案:

答案 0 :(得分:1)

根据您的说法。问题可能是您导入的__init__.py文件product,但该文件名为Product.py。我也不确定Product.py中的缩进,但这可能只是复制并粘贴到堆栈溢出中的格式。

答案 1 :(得分:0)

您的模型定义中存在错误:

barcode = fields.text("barcode")

而不是:

barcode = fields.Text("barcode")

将文本更改为“文本”,您的代码会变得很漂亮。

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

_name = 'kroshu.product'

例如:

_name = 'kroshuproduct'

Odoo通常使用此表达式来指定模型 product 在模块名称 kroshup

  

此错误通常发生在您拥有模型内部错误时   定义。要检测您的错误,请注释所有字段并测试每个   字段。

希望这对您有所帮助!太好了!

答案 2 :(得分:0)

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

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

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

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