Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python openerp中自定义模块的继承_Python_Xml_Openerp - Fatal编程技术网

Python openerp中自定义模块的继承

Python openerp中自定义模块的继承,python,xml,openerp,Python,Xml,Openerp,我已经成功地创建了这个模块,它工作得非常好。现在,我从这个模块继承了另一个模块,我需要您对xml生成的支持。我已经给出了原始的module.py和xml文件以及新的module.py文件。请为我提供新模块的xml 原始module.py文件 from osv import osv from osv import fields class test_base(osv.osv): _name='test.base' _columns={ 'name':fields.

我已经成功地创建了这个模块,它工作得非常好。现在,我从这个模块继承了另一个模块,我需要您对xml生成的支持。我已经给出了原始的module.py和xml文件以及新的module.py文件。请为我提供新模块的xml

原始module.py文件

from osv import osv
from osv import fields

class test_base(osv.osv):
    _name='test.base'
    _columns={
        'name':fields.char('Name'),
        'email':fields.char('Email'),

        'code':fields.integer('Unique ID'),
        'sal':fields.float('Salary'),
        'rate':fields.selection(((10,'10'), (20,'20'),(30,'30')),
               'Percentage of Deduction'),
        'ded':fields.float('Deduction'),
        'bdisplay':fields.float('Button Display'),

}

    def on_change_ded_cal(self, cr, uid, ids,rate,context=None):
        x=rate*2
        return {'value':{'ded':x }}


test_base()  
from osv import osv
from osv import fields
class my_base(osv.osv):
    _name='my.base'
_inherit='test.base'
    _columns={
        'dept':fields.char('Department'),       

        }       
my_base()     
原始模块xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

   <record model="ir.ui.view" id="test_base_form">
       <field name="name">test.base.form</field>
           <field name="model">test.base</field>
           <field name="type">form</field>
           <field name="arch" type="xml">
               <form string="Test Base">                       
                   <field name="name"/>
                   <field name="email"/>
                   <field name="code"/>
                   <field name="sal"/>
                   <field name="rate" on_change="on_change_ded_cal(rate)"/>
                   <field name="ded"/>                       
                   <field name="bdisplay"/>                    
                  </form>
          </field>
    </record>
    <record model="ir.ui.view" id="test_base_tree">
        <field name="name">test.base.tree</field>
        <field name="model">test.base</field>
        <field name="type">tree</field>
        <field name="arch" type="xml">
            <tree string="Test Base">               
               <field name="name"/>
                <field name="email"/>
                <field name="code"/>
                <field name="sal"/>          
                <field name="ded"/>                    
            </tree>
        </field>
    </record>
        <record model="ir.actions.act_window" id="action_test_seq">
        <field name="name">Test Base</field>
        <field name="res_model">test.base</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
    </record>
    <menuitem id="menu_test_base_main" name="Test Base" action="action_test_seq"/>
    <menuitem id="menu_test_base" parent="menu_test_base_main"
              name="Test Base1" action="action_test_seq"/>
</data>
</openerp>

(新字段'dept'可以添加在'ded'字段之后,也请在xml id上解释)

这里您继承了
test.base
模型及其功能到
my.base
。因此,
my.base
将被视为一个新模型,您已经为
my.base
模型定义了一个新视图。您不能继承
test.base
的视图。如果您试图向
test.base
模型添加新字段,则从
my_base()类中删除_name属性或将name属性更改为
\u name='test.base'
。然后可以继承test.base model的视图以添加新字段。例如,您希望将新字段“dept”添加到test.base的树状视图中,然后

<record model="ir.ui.view" id="test_base_tree_inheirt">
    <field name="name">test.base.tree</field>
    <field name="model">test.base</field>
    <field name="type">tree</field>
    <field name="inherit_id" ref="<base_module_name>.test_base_tree"/>
    <field name="arch" type="xml">
        <field name="email" position="after">
            <field name="dept"/>
        </field>
    </field>
</record>

test.base.tree
测试基
树

这里base_module_name是定义id为test_base_树的原始视图的模块名称。如果它在同一个模块中,则无需提供模块名称,只需提供视图id。通过这种方式,您还可以继承表单视图。

“我对新模块xml感到困惑,尤其是id的[sic]”。这不是一个问题。更具体地说:你有什么问题;你写了什么;您如何知道它不工作(错误、意外输出…?)我的问题在这里给出。。。。我可以为新模块获取xml吗?您的意思是希望有人为您编写新模块的xml版本吗?这不是StackOverflow的目的;瑞德:非常感谢。它真的帮了我很大的忙。用树视图的代码替换了我的xml,也用表单视图的同样方法。我衷心感谢你们的知识。也许你们能了解初学者的情况。如果您不介意的话,可以将xml添加到新类my.base中我想使用的位置。正如您在文章中提到的,我不能继承测试库的视图。如何拥有新视图?对于类my.base,必须定义新视图,就像model test.base的视图一样。在新视图中,您可以添加test.base中定义的所有字段以及my.base.Cool中定义的字段。我开始了解这个概念。再次感谢您帮助我解决此继承视图问题以及其他相关的有用信息。对于场景_nameattribute=原始类名,我注意到原始视图也会随新视图一起更新。是否仍有防止此情况发生的方法?我还注意到当_nameattribute!=原始类名,原始视图未更新。如果_nameattribute=原始类名,并且我们继承了该视图,则原始视图将被更新。如果需要,可以使用新旧字段创建新视图。然后原始(旧)视图将不会受到影响。要获取新表单视图,需要从视图中传递上下文属性=“{'form_view_get':'。new_form_view_xmlid'}”。