【问题标题】:('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')('ValidateError', u'在验证字段拱时发生错误:视图架构的 XML 无效!')
【发布时间】:2014-02-02 20:23:19
【问题描述】:

我正在尝试从现有实验室注册表中继承数据和字段。但是当我登录openerp时出现以下错误。我想做那个截图。

('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')

xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ===================== This is tree layout =============================-->
<record id="lis_tree" model="ir.ui.view">
        <field name="name">Lab Registration</field>
        <field name="model">lis.lab</field>
        <field name="arch" type="xml">
            <tree string="lab">
                <field name = "name"/>
                <field name = "customer_email"/>
                <field name = "customer_name"/>
                <field name = "customer_city"/>
                <field name = "customer_mobile"/>
            </tree>
        </field>
    </record>

<!-- ========================This is Form layout===============================-->
<record id="lis_form" model="ir.ui.view">
        <field name="name">Lab Registration</field>
        <field name="model">lis.lab</field>
        <field name="arch" type="xml">
            <form string="lab" version="7.0">
                <sheet>
                    <group>
                        <field name = "name"/>
                        <field name = "customer_name" on_change="on_change_customer(customer_name)"/>
                        <field name = "customer_city"/>
                        <field name = "customer_email"/>
                        <field name = "customer_mobile"/>    
                    </group>
               </sheet>
            </form>
       </field>
    </record>

<!-- ========================= Action Layout ============================= -->
    <record id="action_lab" model="ir.actions.act_window">
        <field name="name">Lab Registration</field>
        <field name="type">ir.actions.act_window</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="lis_tree"/>
    </record>

    <!-- ===================== This is tree layout =============================-->
<record id="test_tree" model="ir.ui.view">
        <field name="name">Test Report</field>
        <field name="model">lis.lab</field>
        <field name="arch" type="xml">
            <tree string="test">
                <field name = "name"/>
                <field name = "customer_email"/>
            </tree>
        </field>
    </record>

<!-- ========================This is Form layout===============================-->
<record id="test_form" model="ir.ui.view">
        <field name="name">Test Report</field>
        <field name="model">lis.lab</field>
        <field name="inherit_id" ref="lis_form"/>
        <field name="arch" type="xml">
            <form string="test" version="7.0">
                <sheet>
                    <group>
                        <field name="lab_id" on_change="on_change_labid(lab_id)"/>
                    </group>
                    <notebook> 
                        <page string="Hemothalaogy">
                            <group colspan="2">
                                <group>
                                    <field name="tot_vol"/>
                                    <field name="cd45"/>
                                </group>
                                <group>
                                    <field name="tncpre" class="oe_inline" />
                                    <field name="tncpost"/>
                                    <field name="cd34"/>
                                </group>
                            </group>
                        </page>
                        <page string="Serology">

                        </page>
                    </notebook>
                </sheet>
            </form>
       </field>
    </record>

<!-- ========================= Action Layout ============================= -->
    <record id="action_test" model="ir.actions.act_window">
        <field name="name">Test Report</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">lis.lab</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" ref="test_tree"/>
    </record>

    <!-- ===========================Menu Settings=========================== -->
    <menuitem name = "LIS" id = "menu_lis_lab" />
        <menuitem name = "Lab Info" id = "menu_sub" parent = "menu_lis_lab"/>
            <menuitem name = "Lab Registration" id = "lab_register" parent = "menu_sub" action = "action_lab" />
            <menuitem name = "Test Report" id = "lab_test" parent = "menu_sub" action = "action_test" />

</data>
</openerp>

蟒蛇

from osv import osv
from osv import fields

class cus(osv.osv):
 _name = "lis.lab"
 _description = "This table is for keeping lab data of cord blood"
 _columns = {
    'name': fields.char('Lab Id',size=20,required=True),
    'customer_name': fields.many2one('res.partner', 'Customer Name', domain=[('customer', '=', True)]),
    'customer_city': fields.char('City', size=20),
    'customer_email': fields.char('Email', size=20),
    'customer_mobile': fields.char('Mobile', size=20)
 }
 def on_change_customer(self, cr, uid, ids, customer_name, context=None):
  values = {}
  if customer_name:
   cust = self.pool.get('res.partner').browse(cr, uid, customer_name, context=context)
   values = {
    'customer_city': cust.city,
    'customer_email': cust.email,
    'customer_mobile': cust.mobile
   }
  return {'value' : values}

class test(osv.osv):
 _inherit = "lis.lab"
 _description = "Lab Result"
 _columns = {
 'lab_id': fields.many2one('lis.lab','Lab Id'),
 'tot_vol': fields.char('Total Volume', size=20),
 'cd45': fields.char('CD45 viability (%)', size=20),
 'tncpre': fields.char('TNC pre (x10 exp 8)', size=20),
 'tncpost': fields.char('TNC post (x10 exp 8)', size=20),
 'cd34': fields.char('Amount CD34+', size=20)
 }
 def on_change_labid(self, cr, uid, ids, name, context=None):
  values = {}
  if name:
   custinfo = self.pool.get('lis.lab').browse(cr, uid, name, context=context)
   values = {
   }
  return {'value' : values}

我想在测试报告表单中显示该信息下的标签。

我只想在测试报告表单中显示标签,而不是在实验室注册中。实验室注册仅包含客户详细信息。测试报告表单包含带有标签的客户详细信息(测试报告)。

【问题讨论】:

  • 您要删除姓名、城市和所有这些字段吗?或者您想通过保持以前的字段原样来添加新字段?因为我可以看到您的第二个表单视图是错误的。所以请明确您的要求。
  • 我想用这些字段添加字段
  • 看我上面的屏幕截图。我想在测试报告表单中的该信息下添加一些标签
  • 试试这个,你之前的问题stackoverflow.com/questions/21428349/inheriting-data-in-openerp/… 并在你之前的问题,.py 文件和 .xml 文件中做同样的事情。希望这对您有所帮助。谢谢。

标签: python xml architecture openerp


【解决方案1】:

试试这个代码,.py这里的文件

from osv import osv
from osv import fields

class cus(osv.osv):
    _name = "lis.lab"
    _description = "This table is for keeping lab data of cord blood"
    _columns = {
        'name': fields.char('Lab Id',size=20,required=True),
        'customer_name': fields.many2one('res.partner', 'Customer Name', domain=[('customer', '=', True)]),
        'customer_city': fields.char('City', size=20),
        'customer_email': fields.char('Email', size=20),
        'customer_mobile': fields.char('Mobile', size=20)
    }

    def on_change_customer(self, cr, uid, ids, customer_name, context=None):
        values = {}
        if customer_name:
            cust = self.pool.get('res.partner').browse(cr, uid, customer_name, context=context)
            values = {
                'customer_city': cust.city,
                'customer_email': cust.email,
                'customer_mobile': cust.mobile
            }
        return {'value' : values}

class test(osv.osv):
    _inherit = "lis.lab"
    _name = "test.lab"
    _description = "Lab Result"
    _columns = {
        'lab_id': fields.many2one('lis.lab','Lab Id'),
        'tot_vol': fields.char('Total Volume', size=20),
        'cd45': fields.char('CD45 viability (%)', size=20),
        'tncpre': fields.char('TNC pre (x10 exp 8)', size=20),
        'tncpost': fields.char('TNC post (x10 exp 8)', size=20),
        'cd34': fields.char('Amount CD34+', size=20)
    }

    def on_change_labid(self, cr, uid, ids, name, context=None):
        values = {}
        if name:
            custinfo = self.pool.get('lis.lab').browse(cr, uid, name, context=context)
            values = {
            }
        return {'value' : values}

view.xml 文件在这里,

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- ===================== This is tree layout =============================-->
<record id="lis_tree" model="ir.ui.view">
    <field name="name">Lab Registration</field>
    <field name="model">lis.lab</field>
    <field name="arch" type="xml">
        <tree string="lab">
            <field name = "name"/>
            <field name = "customer_email"/>
            <field name = "customer_name"/>
            <field name = "customer_city"/>
            <field name = "customer_mobile"/>
        </tree>
    </field>
</record>

<!-- ========================This is Form layout===============================-->
<record id="lis_form" model="ir.ui.view">
    <field name="name">Lab Registration</field>
    <field name="model">lis.lab</field>
    <field name="arch" type="xml">
        <form string="lab" version="7.0">
            <sheet>
                <group>
                    <field name = "name"/>
                    <field name = "customer_name" on_change="on_change_customer(customer_name)"/>
                    <field name = "customer_city"/>
                    <field name = "customer_email"/>
                    <field name = "customer_mobile"/>    
                </group>
           </sheet>
        </form>
   </field>
</record>

<!-- ========================= Action Layout ============================= -->
<record id="action_lab" model="ir.actions.act_window">
    <field name="name">Lab Registration</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">lis.lab</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="view_id" ref="lis_tree"/>
</record>

<!-- ===================== This is tree layout =============================-->
<record id="test_tree" model="ir.ui.view">
    <field name="name">Test Report</field>
    <field name="model">test.lab</field>
    <field name="arch" type="xml">
        <tree string="test">
            <field name = "name"/>
            <field name = "customer_email"/>
            <field name = "customer_name"/>
            <field name = "customer_city"/>
            <field name = "customer_mobile"/>
        </tree>
    </field>
</record>

<!-- ========================This is Form layout of Test Report===============================-->
<record id="test_form" model="ir.ui.view">
    <field name="name">Test Report</field>
    <field name="model">test.lab</field>
    <field name="arch" type="xml">
        <form string="lab" version="7.0">
            <sheet>
                <group>
                    <field name = "name"/>
                    <field name = "customer_name" on_change="on_change_customer(customer_name)"/>
                    <field name = "customer_city"/>
                    <field name = "customer_email"/>
                    <field name = "customer_mobile"/>    
                 </group>
                 <notebook >
                    <page string="Hamthalaogy Report">
                        <group cols='4'>
                        <group>
                            <field name="tot_vol"/>
                            <field name="cd45"/>
                        </group>
                        <group>
                            <field name="tncpre"/>
                            <field name="tncpost"/>
                            <field name="cd34"/>
                        </group>
                        </group>
                    </page>
                    <page string="Serology Report">
                    </page>
                </notebook>
           </sheet>
        </form>
   </field>
</record>

<!-- ========================= Action Layout ============================= -->
<record id="action_test" model="ir.actions.act_window">
    <field name="name">Test Report</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">test.lab</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
</record>

<!-- ===========================Menu Settings=========================== -->
<menuitem name = "LIS" id = "menu_lis_lab" />
<menuitem name = "Lab Info" id = "menu_sub" parent = "menu_lis_lab"/>
<menuitem name = "Lab Registration" id = "lab_register" parent = "menu_sub" action = "action_lab" />
<menuitem name = "Test Report" id = "lab_test" parent = "menu_sub" action = "action_test" />

</data> 
</openerp>

这将使您在上图中按照您的需要进行输出。 谢谢..

【讨论】:

  • 可能做错了。因为我的目的是工作。你有没有复制 .py 文件和 .xml 文件?并使用模块更新数据库。我可以知道你是如何更新的吗?如果您愿意,我将发送您的模块屏幕截图的图像。请复制所有文件。让我进一步询问。
  • 非常感谢它正在成功运行。很棒
【解决方案2】:

用您的第二个视图替换此视图,即文件中的 id="test_form"。然后更新您的模块。再检查一遍。希望你能得到想要的输出。

<record id="test_form" model="ir.ui.view">
        <field name="name">Test Report</field>
        <field name="model">lis.lab</field>
        <field name="inherit_id" ref="lis_form"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='customer_mobile']" position="after">
                <field name="lab_id" on_change="on_change_labid(lab_id)"/>
            </xpath>
            <xpath expr="//group" position="after">
                <notebook> 
                    <page string="Hemothalaogy">
                        <group colspan="2">
                            <group>
                                <field name="tot_vol"/>
                                <field name="cd45"/>
                            </group>
                            <group>
                                <field name="tncpre" class="oe_inline" />
                                <field name="tncpost"/>
                                <field name="cd34"/>
                            </group>
                        </group>
                    </page>
                    <page string="Serology">

                    </page>
                </notebook>
            </xpath>
        </field>
    </record>

【讨论】:

  • 是的,它正在工作。但是这三个选项卡同时显示两种形式。(实验室注册和测试报告)我只想在测试报告形式中显示这三个选项卡。
  • 在您的 act_window id="action_lab" 中将此 view_id 替换为
  • 我不是在问这个。看我的另一个截图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 2011-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多