Odoo 17 Manifest视图异常:表单视图交替无法显示问题排查
Odoo 17模块表单视图显示异常问题解决
问题根源
production_management_input.xml中表单视图的ID重复使用了view_production_line_form,导致后加载的视图覆盖先加载的视图。调整文件顺序仅会改变被覆盖的对象,无法解决根本问题。
解决步骤
- 修改production_management_input.xml中的表单视图ID为唯一值(如
view_production_management_info_form) - 保持manifest文件的data顺序不变(或按业务逻辑排列),无需调整文件加载顺序
修正后的完整代码
manifest文件data部分
"data": [ "security/ir.model.access.csv", "views/menu.xml", "views/product_line_views.xml", "views/product_client_views.xml", "views/product_product_views.xml", "views/production_management_input.xml", ],
models/init.py
from . import production_line from . import production_schedule
models/production_line.py
from odoo import api, fields, models class Production_Line(models.Model): _name = "production.line" _inherit = ['mail.thread', 'mail.activity.mixin'] _description = " Production Line Info Management " line_no = fields.Integer(string="Line No", required=True, tracking=True) class client(models.Model): _name = "production.client" _inherit = ['mail.thread', 'mail.activity.mixin'] _description = " Production Client Management " name = fields.Char(string="Client Name", required=True, tracking=True) class product(models.Model): _name = "production.product" _inherit = ['mail.thread', 'mail.activity.mixin'] _description = " Production Product Management " name = fields.Char(string="Product", required=True, tracking=True)
models/production_schedule.py
from odoo import api, fields, models class ProductionManagement(models.Model): _name = "production.input.management" _inherit = ['mail.thread', 'mail.activity.mixin'] _description = " Production input Management" _rec_name = "client_id" line_id = fields.Many2one("production.line",string="Production Line",required=True,help="Select the production line") client_id = fields.Many2one("production.client",string="Client",required=True,help="Select the client") product_id = fields.Many2one("production.product",string="Product",required=True,help="Select the product") po = fields.Char(string="PO", required=True,help="Purchase Order number" ) mo = fields.Char(string="MO", required=True,help="Manufacturing Order number" ) qty_ordered = fields.Integer(string="QTY Ordered", required=True,help="Enter Ordered Quantity" ) qty_to_produce = fields.Integer(string="QTY to produce", required=True,help="Enter Quantity to produce per day" ) ppl = fields.Integer(string="No of Workers", required=True,help="Enter how many workers on the production line per day" ) hour = fields.Integer(string="No of Hours", required=True,help="Enter how many hours they worked on the production line per day" ) target =fields.Float(string="Target",required=True) date = fields.Date(string="Date") note = fields.Text(string="Note",help="If any notes")
views/menu.xml
<?xml version="1.0" encoding="utf-8"?> <odoo> <menuitem id="menu_production_root" name="Production Management" /> <menuitem id="menu_production" name="Production Info" parent="menu_production_root" /> <!-- menuItem for production Info --> <menuitem id="menu_product_line" name="Production Line" parent="menu_production" action="action_production_line" /> <menuitem id="menu_product_client" name="Client" parent="menu_production" action="action_production_client" /> <menuitem id="menu_product" name="Product" parent="menu_production" action="action_production_product" /> <!-- menuItem for production Input/Output Management --> <menuitem id="menu_production_management_input" name="Production Input Info" parent="menu_production" action="action_production_management_info" /> </odoo>
views/production_line_views.xml
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="view_production_line_tree" model="ir.ui.view"> <field name="name">production.line.tree</field> <field name="model">production.line</field> <field name="arch" type="xml"> <list string="Production Line"> <field name="line_no" /> </list> </field> </record> <record id="view_production_line_form" model="ir.ui.view"> <field name="name">production.line.form</field> <field name="model">production.line</field> <field name="arch" type="xml"> <form string="Production Line"> <sheet> <group> <field name="line_no" /> </group> </sheet> <!-- Chatter --> <chatter /> </form> </field> </record> <record id="action_production_line" model="ir.actions.act_window"> <field name="name">Production Line</field> <field name="res_model">production.line</field> <field name="view_mode">list,form</field> <field name="help" type="html"> <p class="oe_view_nocontent_smiling_face"> Create new Production Line </p> </field> </record> </odoo>
views/production_management_input.xml(已修正视图ID)
<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="view_production_management_info_tree" model="ir.ui.view"> <field name="name">production.management.tree</field> <field name="model">production.input.management</field> <field name="arch" type="xml"> <list string="Production Management Info"> <field name="line_id" /> <field name="client_id" /> <field name="product_id" /> <field name="po" /> <field name="mo" /> <field name="qty_ordered" /> <field name="qty_to_produce" /> <field name="ppl" /> <field name="hour" /> <field name="target" /> <field name="date" /> <field name="note" /> </list> </field> </record> <record id="view_production_management_info_form" model="ir.ui.view"> <field name="name">production.management.form</field> <field name="model">production.input.management</field> <field name="arch" type="xml"> <form string="Production Management Info"> <sheet> <group> <group> <field name="line_id" /> <field name="product_id" /> <field name="po" /> <field name="mo" /> <field name="qty_to_produce" /> <field name="qty_ordered" /> </group> <group> <field name="client_id" /> <field name="ppl" /> <field name="hour" /> <field name="target" /> <field name="date" /> <field name="note" /> </group> </group> </sheet> <!-- Chatter --> <chatter /> </form> </field> </record> <record id="action_production_management_info" model="ir.actions.act_window"> <field name="name">Production Management Input Info</field> <field name="res_model">production.input.management</field> <field name="view_mode">list,form</field> <field name="help" type="html"> <p class="oe_view_nocontent_smiling_face"> Create new Production Input Management </p> </field> </record> </odoo>
security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_production_line,access_production_line,model_production_line,base.group_system,1,1,1,1 access_production_client,access_production_client,model_production_client,base.group_system,1,1,1,1 access_production_product,access_production_product,model_production_product,base.group_system,1,1,1,1 access_production_input_management,access_production_input_management,model_production_input_management,base.group_system,1,1,1,1
内容的提问来源于stack exchange,提问作者Md.Muntasir Mamun
相关产品推荐
相关产品推荐

