Python 在OpenERP中扩展re.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 = {

我目前正在使用开放式ERP。我想用一些附加字段扩展客户/组织表单

我的印象是客户对象模型是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>

我看不出哪里出了问题,有人能帮忙吗?

确保您的依赖项中添加了
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,您不需要实例化您的模型

在表单定义中,您使用的是model
starstream.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,您不需要实例化您的模型

在表单定义中,您使用的是model
starstream.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好),它们基本上都没有文档记录