Python 如何在另一个模块中复制一个模块的值[ODOO]
我制作了一个自定义订阅模块 subscription.pyPython 如何在另一个模块中复制一个模块的值[ODOO],python,module,copy,odoo,Python,Module,Copy,Odoo,我制作了一个自定义订阅模块 subscription.py from openerp.osv import fields, osv class subscriptions(osv.osv): _name = "subscriptions.sub" _description = "subscriptions" _columns = { 'sub_id': fields.integer('Subscription ID', size=10),
from openerp.osv import fields, osv
class subscriptions(osv.osv):
_name = "subscriptions.sub"
_description = "subscriptions"
_columns = {
'sub_id': fields.integer('Subscription ID', size=10),
'cust_id': fields.many2one('res.partner','customer_id', 'Customer ID')
}
partner.py
from openerp import fields, models
class Partner(models.Model):
_inherit = 'res.partner'
customer_id = fields.Integer('Customer ID'),
subscription_id = fields.One2many('subscriptions.sub', 'sub_id', 'Subscription ID')
当我从客户模块创建订阅时,它也会显示在订阅模块中,但当我在订阅模块中创建订阅时,它不会显示在客户模块中
我能在正确的方向上得到一些帮助吗?您的问题是关于理解传递给多个one和One2many字段的参数 对很多人来说 在本报告中,目前声明如下:
类openerp.fields.manyOne(comodel\u name=None,string=None,**kwargs)
此类字段的值是大小为0(无记录)或1(单个记录)的记录集
参数
——目标模型的名称(字符串)comodel\u name
——在搜索该字段时是否生成联接(默认情况下为布尔值auto_join
)False
comodel\u name
是必需的,相关字段或字段扩展除外
因此,fields.manyOne
的第二个参数是该字段在接口中的名称。在旧的API中,我们可以看到()第三个参数是一个auto\u-join
标志:
class many2one(_column):
# ...
def __init__(self, obj, string='unknown', auto_join=False, **args):
因此,在给定的示例中,在指定many21时,应该删除第二个参数,并且只有两个参数
一个人
对于One2many,文档说明:
类openerp.fields.One2many(comodel\u name=None,inverse\u name=None,string=None,**kwargs)
一个是任何领域;该字段的值是comodel_name
中所有记录的记录集,因此该字段inverse_name
等于当前记录
参数
——目标模型的名称(字符串)comodel\u name
——在inverse\u name
(字符串)中反向comodel\u name
字段的名称manyOne
comodel\u name
和inverse\u name
是必需的,相关字段或字段扩展除外
因此,在本例中,需要第二个参数是正确的,但您选择的(sub_id
)是错误的。对于inverse\u name
,您必须在comodel\u name
上选择一个manyOne
字段,该字段将指向带有One2many
的模型。因此,在您的实例中,inverse\u name
应该是cust\u id
结论
要建立从一个模型的Many2one
字段到另一个模型的One2many
字段的关系,One2many
字段的inverse\u name
必须是该Many2one
字段的技术名称,例如:
class ModelA(models.Model):
_name = 'model.a'
m2o_model_a = fields.Many2one('model.a')
class ModelB(models.Model):
_name = 'model.b'
# inverse_name is set to the Many2one of ModelA which points to ModelB
o2m_model_a = fields.One2many('model.b', 'm2o_model_a')
如果您的代码不符合此要求,则不会在两个字段之间建立链接,并且每个模型字段都有独立的值。您的意思是“合作伙伴模块”吗?没有显示客户模块。是的,我指的是使用合作伙伴模块的客户表单。我稍微调低了格式。另外,作为参考,如果问题上有语言标记,则该问题及其答案会自动获得该语言的语法突出显示。(因此,在本例中,您可以免费获得python高亮显示。:)谢谢!这正是我需要的。它正在工作