Openerp 如何在编辑表单中显示/刷新相关字段
我有一个对象Openerp 如何在编辑表单中显示/刷新相关字段,openerp,Openerp,我有一个对象shipping,其中有一个字段product,该字段属于与manyOne类型相关的manyOne,它引用了包含一个产品(manyOne)的manyOne对象contract。创建装运时,在保存装运前不会显示产品。此外,编辑时,产品不会随合同而更改 我试图创建一个onchange事件来返回新的产品值,但没有成功 当关系更改时,它们是否是刷新相关字段的方法 穆罕默德 阿里 是如果字段相关,则只有在保存记录时才会显示值。因为您保存了记录,ORM将链接相关字段值,网页将读回并显示给您 但
shipping
,其中有一个字段product
,该字段属于与manyOne类型相关的manyOne,它引用了包含一个产品(manyOne)的manyOne对象contract
。创建装运时,在保存装运前不会显示产品。此外,编辑时,产品不会随合同而更改
我试图创建一个onchange事件来返回新的产品值,但没有成功
当关系更改时,它们是否是刷新相关字段的方法
- 穆罕默德
- 阿里
是如果字段相关,则只有在保存记录时才会显示值。因为您保存了记录,ORM将链接相关字段值,网页将读回并显示给您
但若要在from上立即显示值,您可以使用“更改”上的
,
,当您更改字段本身时,它可以更改任何字段的值
问候。我觉得
销售、订单
和库存、挑选
标准物品非常接近您的需要。您最好扩展标准对象,而不是从头开始创建新对象
关于你的问题,你需要改变你的行为,所以你应该尝试修正这个不起作用的方法。
在6.1中有一个很好的例子。请参见crm/crm.py
中的crm\u base
对象
您可以在CRM Lead表单中看到它的作用):选择合作伙伴时,地址和电子邮件会自动填充。您还需要查看crm\crm\u lead\u view.xml中的视图idcrm\u case\u form\u view\u opor
,以检查该方法的使用方式
型号代码为:
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
"""This function returns value of partner email based on Partner Address
:param ids: List of case IDs
:param add: Id of Partner's address
:param email: Partner's email ID
"""
data = {'value': {'email_from': False, 'phone':False}}
if add:
address = self.pool.get('res.partner.address').browse(cr, uid, add)
data['value'] = {'email_from': address and address.email or False ,
'phone': address and address.phone or False}
if 'phone' not in self._columns:
del data['value']['phone']
return data
def onchange_partner_id(self, cr, uid, ids, part, email=False):
"""This function returns value of partner address based on partner
:param ids: List of case IDs
:param part: Partner's id
:param email: Partner's email ID
"""
data={}
if part:
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
data = {'partner_address_id': addr['contact']}
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
视图侧代码为:
<field name="partner_id" select="1" colspan="2"
on_change="onchange_partner_id(partner_id, email_from)" string="Customer" />
<field name="partner_address_id" string="Contact" colspan="1"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
非常感谢。我的合同
实际上是继承自采购订单
。此外,发货
\u继承自account.analysis.account
,并链接到多个库存领料
。我的onchange
确实坏了。谢谢。您可能会选择另一种方式:合同
继承自账户。分析。账户
和发货
继承自采购。订单
。否。合同
是与海外供应商签订的长期采购合同<代码>装运
(实际上是船舶
)\u继承自account.Analytical.account
,因为每个产品装运/船舶都是作为一个项目处理的,有自己的费用和损益。感谢您的帮助。onchange
被破坏,所以我修复了它。@firebug:on\u相关(m20)字段上的更改未被触发。