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模型名称错误的主要内容,如果未能解决你的问题,请参考以下文章