2014-01-14 2 views
0

Я успешно создал модуль и работает абсолютно нормально. Теперь из этого модуля я наследовал другой модуль, для которого мне нужна ваша поддержка для разложения xml. Я дал исходный модуль .py и xml-файл вместе с новым модулем .py-файла. Просьба предоставить мне XML для нового модуляНаследование настраиваемого модуля в openerp

ОРИГИНАЛ модуль файл .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() 

оригинальный модуль 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> 

Новый модуль файл .py

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()  

(новое поле " dept может быть добавлен после поля 'ded' также, пожалуйста, объясните на xml id)

+0

«Я смущен новым модулем xml, особенно с идентификатором [sic]». Это * не * вопрос. Будьте более конкретными: с чем вы столкнулись; что вы написали; как вы знаете, что это не работает (ошибки, неожиданные выходы ...)? – jonrsharpe

+0

Мой вопрос дается здесь .... Могу ли я получить xml для нового модуля. – user3153567

+0

Вы хотите, чтобы кто-то написал вам xml-версию нового модуля? Это не то, для чего предназначен StackOverflow; прочитайте: http://stackoverflow.com/help/asking – jonrsharpe

ответ

2

Здесь вы унаследовали модель test.base и ее функции до my.base. Таким образом, my.base будет рассматриваться как новая модель, и вы определили новое представление для своей модели my.base. Вы не можете наследовать вид test.base. Если вы пытаетесь добавить новое поле в модель test.base, то из my_base() class удалите атрибут _name или измените атрибут имени на _name ='test.base'. Затем вы можете наследовать представление модели test.base, чтобы добавить новое поле. Например, вы хотите добавить новое поле «отдела» в виде дерева 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> 

Здесь base_module_name этом имя модуля, в котором первоначальный вид с идентификатором test_base_tree определен. Если он находится в том же модуле, то не нужно указывать имя модуля, просто идентификатор вида. Таким образом, вы также можете наследовать вид формы.

+0

Большое спасибо. Это очень помогло мне. Замените мой xml своим кодом для древовидного представления и таким же образом подготовленным для просмотра формы. Я искренне ценю ваши знания. Напротив, вы можете понять ситуацию с новичками. если вы не возражаете, можете ли вы xml, где я хотел пойти с новым классом my.base. Как вы упомянули в этом, я не могу унаследовать представление тестовой базы. Как я могу получить новое представление? – user3153567

+0

Для вашего класса my.base вы должны определить новый вид, как и для модели test.base. В новом представлении вы можете добавить все поля, определенные в test.base, а также поля, определенные в my.base. – OmaL

+0

Прохладный. Я познакомился с этой концепцией. Еще раз спасибо за помощь в устранении этой унаследованной проблемы вида, а также другую полезную информацию об этом. – user3153567

Смежные вопросы