Python 在OpenERP中扩展re.partner
我目前正在使用开放式ERP。我想用一些附加字段扩展客户/组织表单 我的印象是客户对象模型是res.partner 以下是我目前的代码:Python 在OpenERP中扩展re.partner,python,openerp,Python,Openerp,我目前正在使用开放式ERP。我想用一些附加字段扩展客户/组织表单 我的印象是客户对象模型是res.partner 以下是我目前的代码: from osv import fields, osv class starstream_customers(osv.osv): _name = 'starstream.customers' _inherit = 'res.partner' _table = 'res_partner' _columns = {
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>
我看不出哪里出了问题,有人能帮忙吗?确保您的依赖项中添加了
crm
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.py
'depends': ['base', 'crm'],
确保已将
crm
添加到依赖项中
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.py
'depends': ['base', 'crm'],
这里有几个问题:
您同时定义了\u名称
和\u继承
,它们的值不同。如果您想要的是一个名为starstream.customers
的全新表,其列是添加了新列的res.partner
模型的超集,那么这没有什么错,但是您使用的是现有的res\u partner表进行存储
但是,如果您只想将列添加到现有的res.parter模型中,以便合作伙伴拥有其所有现有信息和新列,那么通常的模式是只让_继承并取出_名称和_表。你会发现有几个地方有这种模式,比如stock.picking.in和stock.picking.out,但除非你确定自己在做什么,否则我不会推荐它
如果您想要后者,这是95%的表扩展的模式,请删除_name和_table属性,只保留inherit
这是可选的,但如果您为OpenERP版本7编码,则应继承
osv.Model
,而不是osv.osv
<代码>osv。osv可以工作,但不推荐使用。同样对于版本7,您不需要实例化您的模型
在表单定义中,您使用的是modelstarstream.customers
,但尝试为不同的模型继承表单(res.partners
),这正是触发您看到的实际错误的原因。由于您使用的是不同的模型,因此需要填写完整的表单。如果您按照上述建议从模型中删除\u name
和\u table
,那么您可以将表单上的模型更改为res.partner
,它应该可以正常工作
不确定为什么需要为上述代码添加对crm的依赖关系,res.partner位于基本模块中。这里有一些问题:
您同时定义了\u名称
和\u继承
,它们的值不同。如果您想要的是一个名为starstream.customers
的全新表,其列是添加了新列的res.partner
模型的超集,那么这没有什么错,但是您使用的是现有的res\u partner表进行存储
但是,如果您只想将列添加到现有的res.parter模型中,以便合作伙伴拥有其所有现有信息和新列,那么通常的模式是只让_继承并取出_名称和_表。你会发现有几个地方有这种模式,比如stock.picking.in和stock.picking.out,但除非你确定自己在做什么,否则我不会推荐它
如果您想要后者,这是95%的表扩展的模式,请删除_name和_table属性,只保留inherit
这是可选的,但如果您为OpenERP版本7编码,则应继承
osv.Model
,而不是osv.osv
<代码>osv。osv可以工作,但不推荐使用。同样对于版本7,您不需要实例化您的模型
在表单定义中,您使用的是modelstarstream.customers
,但尝试为不同的模型继承表单(res.partners
),这正是触发您看到的实际错误的原因。由于您使用的是不同的模型,因此需要填写完整的表单。如果您按照上述建议从模型中删除\u name
和\u table
,那么您可以将表单上的模型更改为res.partner
,它应该可以正常工作
不确定为什么需要为上述代码添加对crm的依赖关系,res.partner位于基本模块中。谢谢Adrian。插入osv.Model有效,我将很快检查视图xml。“这是可选的,但是如果您为OpenERP版本7编码,您应该继承osv.Model,而不是osv.osv.osv.osv有效,但是不推荐使用。同样对于版本7,您不需要实例化您的模型。”-有没有地方可以找到这些“开发人员更改”?我遇到过很多这样的小变化(good-osv.Model无疑比osv.osv好),它们基本上是没有文档的汉克斯·阿德里安。插入osv.Model有效,我将很快检查视图xml。“这是可选的,但是如果您为OpenERP版本7编码,您应该继承osv.Model,而不是osv.osv.osv.osv有效,但是不推荐使用。同样对于版本7,您不需要实例化您的模型。”-有没有地方可以找到这些“开发人员更改”?我遇到过很多这样的小改动(good-osv.Model无疑比osv.osv好),它们基本上都没有文档记录