2013-10-22 38 views
0

我目前正在使用Open ERP。我想擴展Customers/Organistion表單的一些附加字段。在OpenERP中擴展re.partner

我的印象是客戶對象模型是res.partner。

這是到目前爲止我的代碼:

from osv import fields, osv 

class starstream_customers(osv.osv): 
    _name = 'starstream.customers' 
    _inherit = 'res.partner' 
    _table = 'res_partner' 
    _columns = { 
     'caller_id': fields.char('Caller ID',size=128), 
     'rating': fields.selection([ 
      ('none', '--None--'), 
      ('shutdown', 'Shutdown'), 
      ('aquired', 'Aquired'), 
      ('active', 'Active'), 
      ('cancelled', 'Project Cancelled') 
      ], 'Rating'), 
     'industry': fields.char('Industry',size=265), 
     'type':fields.selection([ 
      ('supplier', 'Supplier'), 
      ('customer', 'Customer'), 
      ('old_customer', 'Old Customer'), 
      ('supplier', 'Supplier'), 
      ('customer_support_team', 'Customers Support Team'), 
      ('none', '--None--'), 
      ], 'Type'), 
     'invoice_address': fields.char('Invoice Address',size=512), 
     'employees': fields.integer('Employees'), 
    } 
starstream_customers() 

我的視圖文件:

<openerp> 
    <data> 
     <record model="ir.ui.view" id="view_starstream_customers"> 
      <field name="name">starstream.customers.tree</field> 
      <field name="model">starstream.customers</field> 
      <field name="inherit_id" ref="base.view_partner_form"/> 
      <field name="arch" type="xml"> 
       <field name="name" position="after"> 
        <field name="rating"/> 
       </page> 
      </field> 
     </record> 
    </data> 
</openerp> 

現在,我只是想在分級字段添加,只到其工作。

每次我嘗試重新寫這個,我得到:

TypeError: The model "('res.partner',)" specifies an unexisting parent class "('res.partner',)" 
You may need to add a dependency on the parent class' module. 

我看不到我要去哪裏錯了,誰能幫助?

回答

4

的幾個問題在這裏:

您已經定義既是_name_inherit,他們有不同的價值觀。如果你想要的是一個名爲starstream.customers的全新表格,它的列是res.partner模型的一個超集,並添加了新的表格,但是您正在使用現有的res_partner表進行存儲,這沒什麼不對。

但是,如果您只是想將列添加到現有的res.parter模型中,以便合作伙伴擁有所有現有信息以及新列,那麼通常的模式是隻需_inherit並取出_name和_表。例如,你會發現一些有這種模式的地方,stock.picking.in和stock.picking.out,但除非你確定自己在做什麼,否則我不會推薦它。

如果您希望後面的表格擴展名爲95%的模式,請刪除_name和_table屬性,並保留繼承。

這是可選的,但如果您正在編碼OpenERP版本7,則應繼承osv.Model而不是osv.osvosv.osv有效,但不推薦使用。同樣對於版本7,您不需要實例化您的模型。

在你的表單定義,您使用的模型starstream.customers而是試圖繼承形式不同的模型(res.partners),這是什麼觸發你所看到的實際的錯誤。當你使用不同的模型時,你需要做一個完整的表單。如果您按照上述建議去除模型中的_name_table,則可以將表單上的模型更改爲res.partner,它應該可以正常工作。

不知道爲什麼需要在上面的代碼中添加對crm的依賴關係,res.partner位於基本模塊中。

+0

謝謝阿德里安。 Inherting osv.Model工作,我會很快檢查視圖xml。 – outrunthewolf

+0

「這是可選的,但是如果你編寫OpenERP版本7,你應該繼承osv.Model,而不是osv.osv。osv.osv的作品,但不推薦使用。對於版本7,你不需要實例化你的模型。 - 有沒有可以找到這些「開發人員變動」的地方?我遇到過很多這些小(好 - osv.Model無疑比osv.osv好)的變化,而且它們基本上沒有記錄 – LeartS

0

確保您已將crm添加到您的依賴關係中。

__openerp__.py

'depends': ['base', 'crm'],