我正在尝试为股票管理建立一个名为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
答案 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
也必须存在,要遵循相同的方法。